diff --git a/sources/editor/ui/qetelementeditor.cpp b/sources/editor/ui/qetelementeditor.cpp index 0a05d64b4..a46c56aa5 100644 --- a/sources/editor/ui/qetelementeditor.cpp +++ b/sources/editor/ui/qetelementeditor.cpp @@ -77,8 +77,9 @@ QETElementEditor::QETElementEditor(QWidget *parent) : //ui->m_display_menu->insertMenu(ui->m_zoom_in_action, menu); setWindowState(Qt::WindowMaximized); - readSettings(); + readSettings(); // restoreGeometry before show() show(); + readSettingsState(); // restoreState() must be called after show() in Qt6 } /** @@ -950,20 +951,28 @@ void QETElementEditor::readSettings() restoreGeometry(geometry.toByteArray()); } + auto data = m_elmt_scene->elementData(); + data.m_drawing_information = settings.value("elementeditor/default-informations", "").toString(); + m_elmt_scene->setElementData(data); +} + +/** + * @brief QETElementEditor::readSettingsState + * Restore the window state (docks, toolbars). + * Must be called AFTER show() in Qt6 for restoreState() to work correctly. + */ +void QETElementEditor::readSettingsState() +{ + QSettings settings; + QVariant state = settings.value("elementeditor/state"); if (state.isValid()) { #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) - if (!restoreState(state.toByteArray())) { - settings.remove("elementeditor/state"); - } + restoreState(state.toByteArray()); #else restoreState(state.toByteArray()); #endif } - - auto data = m_elmt_scene->elementData(); - data.m_drawing_information = settings.value("elementeditor/default-informations", "").toString(); - m_elmt_scene->setElementData(data); } /** diff --git a/sources/editor/ui/qetelementeditor.h b/sources/editor/ui/qetelementeditor.h index 579d9bab4..b164017f8 100644 --- a/sources/editor/ui/qetelementeditor.h +++ b/sources/editor/ui/qetelementeditor.h @@ -116,6 +116,7 @@ class QETElementEditor : public QMainWindow private: bool canClose(); void readSettings(); + void readSettingsState(); void writeSettings() const; void setupActions(); void updateAction(); diff --git a/sources/qetapp.cpp b/sources/qetapp.cpp index d8afcc34b..0463be2ee 100644 --- a/sources/qetapp.cpp +++ b/sources/qetapp.cpp @@ -1975,6 +1975,7 @@ void QETApp::openTitleBlockTemplate(const TitleBlockTemplateLocation &location, qet_template_editor -> setOpenForDuplication(duplicate); qet_template_editor -> edit(location); qet_template_editor -> show(); + qet_template_editor -> readSettingsState(); // must run after show() in Qt6 } /** @@ -1986,6 +1987,7 @@ void QETApp::openTitleBlockTemplate(const QString &filepath) { QETTitleBlockTemplateEditor *qet_template_editor = new QETTitleBlockTemplateEditor(); qet_template_editor -> edit(filepath); qet_template_editor -> show(); + qet_template_editor -> readSettingsState(); // must run after show() in Qt6 } /** diff --git a/sources/titleblock/qettemplateeditor.cpp b/sources/titleblock/qettemplateeditor.cpp index 6277a25d5..4195c30ba 100644 --- a/sources/titleblock/qettemplateeditor.cpp +++ b/sources/titleblock/qettemplateeditor.cpp @@ -358,6 +358,7 @@ void QETTitleBlockTemplateEditor::newTemplate() QETTitleBlockTemplateEditor *qet_template_editor = new QETTitleBlockTemplateEditor(); qet_template_editor -> edit(TitleBlockTemplateLocation()); qet_template_editor -> show(); + qet_template_editor -> readSettingsState(); // must run after show() in Qt6 } /** @@ -645,14 +646,23 @@ void QETTitleBlockTemplateEditor::readSettings() // window size and position QVariant geometry = settings.value("titleblocktemplateeditor/geometry"); if (geometry.isValid()) restoreGeometry(geometry.toByteArray()); +} + +/** + @brief QETTitleBlockTemplateEditor::readSettingsState + Restore the window state (docks, toolbars). + Must be called AFTER show() in Qt6 for restoreState() to work correctly + -- callers are responsible for calling this after show(), since this + window isn't shown by its own constructor. +*/ +void QETTitleBlockTemplateEditor::readSettingsState() +{ + QSettings settings; - // window state (toolbars, docks...) QVariant state = settings.value("titleblocktemplateeditor/state"); if (state.isValid()) { #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) - if (!restoreState(state.toByteArray())) { - settings.remove("titleblocktemplateeditor/state"); - } + restoreState(state.toByteArray()); #else restoreState(state.toByteArray()); #endif diff --git a/sources/titleblock/qettemplateeditor.h b/sources/titleblock/qettemplateeditor.h index 67ac3c231..cfb6709b7 100644 --- a/sources/titleblock/qettemplateeditor.h +++ b/sources/titleblock/qettemplateeditor.h @@ -108,6 +108,7 @@ class QETTitleBlockTemplateEditor : public QETMainWindow { public slots: void readSettings(); + void readSettingsState(); void writeSettings(); void selectedCellsChanged(const QList&); void duplicateCurrentLocation();