diff options
author | Marcin Miklas <marcin.miklas@teleca.com> | 2011-01-07 11:06:38 +0100 |
---|---|---|
committer | Michal Guminiak <michal.guminiak@teleca.com> | 2011-01-07 12:40:13 +0100 |
commit | ed8094e5f8a13d54073659f79625182856066734 (patch) | |
tree | a8b32d6598be90d0a5ca521ee0f02475cfaa02e4 | |
parent | b7d66fc5c97db7e657983148e44bed2387c675c3 (diff) |
Fixes: NB#215654 - Crash in MNavigationBarViewPrivate::updateDockedToolBar during application shutdown.
RevBy: Dominik, MichaĆ
Details: MNavigationBarView is not destroyed until MNavigationBar destructor chain reaches ~MWidgetController
so we must call MNavigationBar::undockToolBar in ~MApplicationWindow to notify view that toolbar is destroyed.
-rw-r--r-- | src/corelib/widgets/mapplicationwindow.cpp | 4 | ||||
-rw-r--r-- | src/corelib/widgets/mnavigationbarmodel.h | 3 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/corelib/widgets/mapplicationwindow.cpp b/src/corelib/widgets/mapplicationwindow.cpp index e9cff950..239674d5 100644 --- a/src/corelib/widgets/mapplicationwindow.cpp +++ b/src/corelib/widgets/mapplicationwindow.cpp @@ -125,7 +125,11 @@ MApplicationWindowPrivate::~MApplicationWindowPrivate() delete menu; menu = 0; } + if (navigationBar) { + // MNavigationBarView is not destroyed until MNavigationBar destructor chain reaches ~MWidgetController + // so we have to notify the view earlier that the toolbar is already destroyed. + navigationBar->undockToolBar(); delete navigationBar; navigationBar = 0; } diff --git a/src/corelib/widgets/mnavigationbarmodel.h b/src/corelib/widgets/mnavigationbarmodel.h index be5906ec..4121e4f9 100644 --- a/src/corelib/widgets/mnavigationbarmodel.h +++ b/src/corelib/widgets/mnavigationbarmodel.h @@ -46,6 +46,9 @@ private: M_MODEL_PROPERTY(bool, progressIndicatorVisible, ProgressIndicatorVisible, true, false) M_MODEL_PROPERTY(bool, arrowIconVisible, ArrowIconVisible, true, false) M_MODEL_PTR_PROPERTY(MToolBar *, toolBar, ToolBar, true, 0) + // in the line above we should have something like: + // M_MODEL_PROPERTY(QPointer<MToolbar>, toolBar, ToolBar, true, 0) + // but it causes a potential ABI break. M_MODEL_PROPERTY(MNavigationBarModel::EscapeButtonModeEnum, escapeButtonMode, EscapeButtonMode, true, MNavigationBarModel::EscapeButtonClose) M_MODEL_PROPERTY(bool, escapeButtonEnabled, EscapeButtonEnabled, true, true) |