aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcin Miklas <marcin.miklas@teleca.com>2011-01-07 11:06:38 +0100
committerMichal Guminiak <michal.guminiak@teleca.com>2011-01-07 12:40:13 +0100
commited8094e5f8a13d54073659f79625182856066734 (patch)
treea8b32d6598be90d0a5ca521ee0f02475cfaa02e4
parentb7d66fc5c97db7e657983148e44bed2387c675c3 (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.cpp4
-rw-r--r--src/corelib/widgets/mnavigationbarmodel.h3
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)