From 52b10e51563939db8a19bb9336e3280f198b771e Mon Sep 17 00:00:00 2001 From: Tobias Markmann Date: Fri, 9 Dec 2016 09:07:40 +0100 Subject: Do not emit windowClosing signal in QtTabbable dtor Instead, handle the QCloseEvent and emit the windowClosing signal there. This is an attempt to fix a crash I am unable to reproduce but which crash stack includes the signal emit in ~QtTabbable. Test-Information: Builds on macOS 10.12.1 with clang master. All unit and integration tests pass. Manual login and close of Swift worked without a crash. Change-Id: I470f3c5362fd0f502c542560854424e87fc0727e diff --git a/Swift/QtUI/QtTabbable.cpp b/Swift/QtUI/QtTabbable.cpp index ed0963b..df2cbfe 100644 --- a/Swift/QtUI/QtTabbable.cpp +++ b/Swift/QtUI/QtTabbable.cpp @@ -22,7 +22,7 @@ QtTabbable::QtTabbable() : QWidget() { } QtTabbable::~QtTabbable() { - emit windowClosing(); + } bool QtTabbable::isWidgetSelected() { @@ -65,4 +65,9 @@ bool QtTabbable::event(QEvent* event) { return QWidget::event(event); } +void QtTabbable::closeEvent(QCloseEvent* event) { + emit windowClosing(); + event->accept(); +} + } diff --git a/Swift/QtUI/QtTabbable.h b/Swift/QtUI/QtTabbable.h index 4073ab4..5837702 100644 --- a/Swift/QtUI/QtTabbable.h +++ b/Swift/QtUI/QtTabbable.h @@ -16,6 +16,7 @@ namespace Swift { public: enum AlertType {NoActivity, WaitingActivity, ImpendingActivity}; virtual ~QtTabbable(); + bool isWidgetSelected(); virtual AlertType getWidgetAlertState() {return NoActivity;} virtual int getCount() {return 0;} @@ -24,7 +25,8 @@ namespace Swift { protected: QtTabbable(); - bool event(QEvent* event); + virtual bool event(QEvent* event); + virtual void closeEvent(QCloseEvent* event); signals: void titleUpdated(); -- cgit v0.10.2-6-g49f6