From 0624fb56083ba872191dc7f67aae771efce0aeb1 Mon Sep 17 00:00:00 2001 From: con <qtc-committer@nokia.com> Date: Tue, 11 Aug 2009 11:58:19 +0200 Subject: [PATCH] Be more robust wrt restoring settings. Make sure that we give the QMainWindow always a valid layout before restoring settings, so if something goes wrong with that, we don't end up with a broken layout. --- src/plugins/designer/editorwidget.cpp | 19 +++++++++++++++---- src/plugins/designer/editorwidget.h | 1 + 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/plugins/designer/editorwidget.cpp b/src/plugins/designer/editorwidget.cpp index 7a1b60ee3d9..f937bcf181e 100644 --- a/src/plugins/designer/editorwidget.cpp +++ b/src/plugins/designer/editorwidget.cpp @@ -80,7 +80,8 @@ SharedSubWindow::~SharedSubWindow() QHash<QString, QVariant> EditorWidget::m_globalState = QHash<QString, QVariant>(); EditorWidget::EditorWidget(QWidget *formWindow) - : m_mainWindow(new Core::Utils::FancyMainWindow) + : m_mainWindow(new Core::Utils::FancyMainWindow), + m_initialized(false) { QVBoxLayout *layout = new QVBoxLayout; layout->setMargin(0); @@ -125,7 +126,6 @@ void EditorWidget::setDefaultLayout() } m_mainWindow->setTrackingEnabled(true); - m_globalState = m_mainWindow->saveSettings(); } void EditorWidget::activate() @@ -133,10 +133,21 @@ void EditorWidget::activate() for (int i=0; i < DesignerSubWindowCount; i++) m_designerSubWindows[i]->activate(); + if (!m_initialized) { + // set a default layout, so if something goes wrong with + // restoring the settings below, there is a fallback + // (otherwise we end up with a broken mainwindow layout) + // we can't do it in the constructor, because the sub windows + // don't have their widgets yet there + setDefaultLayout(); + m_initialized = true; + } + if (!m_globalState.isEmpty()) m_mainWindow->restoreSettings(m_globalState); - else - setDefaultLayout(); + else { + m_globalState = m_mainWindow->saveSettings(); + } } void EditorWidget::hideEvent(QHideEvent *) diff --git a/src/plugins/designer/editorwidget.h b/src/plugins/designer/editorwidget.h index ca3965a812d..a18e86166ac 100644 --- a/src/plugins/designer/editorwidget.h +++ b/src/plugins/designer/editorwidget.h @@ -93,6 +93,7 @@ private: SharedSubWindow* m_designerSubWindows[Designer::Constants::DesignerSubWindowCount]; QDockWidget *m_designerDockWidgets[Designer::Constants::DesignerSubWindowCount]; Core::Utils::FancyMainWindow *m_mainWindow; + bool m_initialized; static QHash<QString, QVariant> m_globalState; }; -- GitLab