diff --git a/src/plugins/designer/editorwidget.cpp b/src/plugins/designer/editorwidget.cpp index 7a1b60ee3d985342c19ce1d7d7f12090a498d913..f937bcf181e63e2d9499212d1b81cc4b8ced6e76 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 ca3965a812da2866f9a7f05918fc0fe7e919cb49..a18e86166ac8ed2212c94a35368b0775e5cfe291 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; };