diff options
author | Adam Endrodi <ext-adam.endrodi@nokia.com> | 2010-11-04 17:48:31 +0200 |
---|---|---|
committer | Adam Endrodi <ext-adam.endrodi@nokia.com> | 2010-11-04 17:48:31 +0200 |
commit | 428e671cb6f24b951b33519574f8701c01c2e3a1 (patch) | |
tree | 8dc4dd86beb83a680ce7a728c08ed90bcd15bef4 | |
parent | 658b1baedd51082cef57bf09d36c1a5aeb2b04ca (diff) |
don't reimplement deleteLater()deletelater
It's not a virtual method, so calling it on a non-MCompositorWindow-typed
variable wouldn't do what is meant.
* src/mcompositewindow.cpp (MCompositeWindow::event):
Catch the QEvent::DeferredDelete instead and re-post it if the window
shouldn't be deleted yet.
-rw-r--r-- | src/mcompositewindow.cpp | 11 | ||||
-rw-r--r-- | src/mcompositewindow.h | 6 |
2 files changed, 9 insertions, 8 deletions
diff --git a/src/mcompositewindow.cpp b/src/mcompositewindow.cpp index 06f21ba..78bbab3 100644 --- a/src/mcompositewindow.cpp +++ b/src/mcompositewindow.cpp @@ -423,11 +423,14 @@ void MCompositeWindow::closeWindow() iconify(fadeRect, defer); } -void MCompositeWindow::deleteLater() +bool MCompositeWindow::event(QEvent *e) { - destroyed = true; - if (!is_transitioning) - QObject::deleteLater(); + if (e->type() == QEvent::DeferredDelete && is_transitioning) { + // Can't delete the object yet, try again in the next iteration. + deleteLater(); + return true; + } else + return QObject::event(e); } void MCompositeWindow::prettyDestroy() diff --git a/src/mcompositewindow.h b/src/mcompositewindow.h index b82dfc6..cc53cd7 100644 --- a/src/mcompositewindow.h +++ b/src/mcompositewindow.h @@ -72,10 +72,8 @@ public: Qt::HANDLE window() const { return win_id; } - /*! - * Overriden QObject::deleteLater() - */ - void deleteLater(); + // Reimplemented to defer deleteLater()s until transitions are over. + virtual bool event(QEvent *); /*! * Saves the global state of this item. Possibly transformations and |