summaryrefslogtreecommitdiffstats
path: root/src/designer/src/designer/qdesigner_workbench.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/designer/src/designer/qdesigner_workbench.cpp')
-rw-r--r--src/designer/src/designer/qdesigner_workbench.cpp24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/designer/src/designer/qdesigner_workbench.cpp b/src/designer/src/designer/qdesigner_workbench.cpp
index cbb1e83e8..5202a8006 100644
--- a/src/designer/src/designer/qdesigner_workbench.cpp
+++ b/src/designer/src/designer/qdesigner_workbench.cpp
@@ -182,7 +182,8 @@ QDesignerWorkbench::QDesignerWorkbench() :
m_globalMenuBar(new QMenuBar),
m_mode(NeutralMode),
m_dockedMainWindow(0),
- m_state(StateInitializing)
+ m_state(StateInitializing),
+ m_uiSettingsChanged(false)
{
QDesignerSettings settings(m_core);
@@ -246,7 +247,7 @@ QDesignerWorkbench::QDesignerWorkbench() :
{ // Add application specific options pages
QDesignerAppearanceOptionsPage *appearanceOptions = new QDesignerAppearanceOptionsPage(m_core);
- connect(appearanceOptions, SIGNAL(settingsChangedDelayed()), this, SLOT(restoreUISettings()));
+ connect(appearanceOptions, SIGNAL(settingsChanged()), this, SLOT(notifyUISettingsChanged()));
QList<QDesignerOptionsPageInterface*> optionsPages = m_core->optionsPages();
optionsPages.push_front(appearanceOptions);
m_core->setOptionsPages(optionsPages);
@@ -1061,6 +1062,25 @@ void QDesignerWorkbench::setFormWindowMinimized(QDesignerFormWindow *fw, bool mi
}
}
+/* Applies UI mode changes using Timer-0 delayed signal
+ * signal to make sure the preferences dialog is closed and destroyed
+ * before a possible switch from docked mode to top-level mode happens.
+ * (The switch deletes the main window, which the preference dialog is
+ * a child of -> BOOM) */
+
+void QDesignerWorkbench::applyUiSettings()
+{
+ if (m_uiSettingsChanged) {
+ m_uiSettingsChanged = false;
+ QTimer::singleShot(0, this, SLOT(restoreUISettings()));
+ }
+}
+
+void QDesignerWorkbench::notifyUISettingsChanged()
+{
+ m_uiSettingsChanged = true;
+}
+
void QDesignerWorkbench::restoreUISettings()
{
UIMode mode = QDesignerSettings(m_core).uiMode();