Compare commits

...

4 Commits

Author SHA1 Message Date
Laurent Trinques 487b22f483 Merge pull request #769 from Kellermorph/layout-fix
Fix dock widget size/position not being restored on Qt6
2026-08-28 09:25:00 +02:00
Kellermorph 8f6f41ed19 Clean up readSettingsState() in all three editors
- Remove dead #if QT_VERSION conditionals (both branches were identical)
- Add settings.remove() guard on restoreState() failure consistently
  across all three editors (now safe since all run after show())
2026-08-23 18:25:23 +02:00
Kellermorph 61a160fa62 Fix restoreState() for QETElementEditor and QETTitleBlockTemplateEditor on Qt6
Apply the same split readSettings()/readSettingsState() pattern from
QETDiagramEditor to the other two main windows:
- QETElementEditor: split in constructor, call readSettingsState() after show()
- QETTitleBlockTemplateEditor: split readSettings(), callers call
  readSettingsState() after show() (newTemplate + 2x openTitleBlockTemplate)
- Remove destructive settings.remove() guards that would delete saved
  state on every Qt6 launch when restoreState() fails before show()

Co-authored-by: ispyisail
2026-08-23 10:37:52 +02:00
Kellermorph f6afd87522 Fix dock widget size/position not being restored on Qt6 2026-08-22 11:08:02 +02:00
7 changed files with 62 additions and 13 deletions
+19 -6
View File
@@ -78,8 +78,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
}
/**
@@ -951,16 +952,28 @@ void QETElementEditor::readSettings()
restoreGeometry(geometry.toByteArray());
}
QVariant state = settings.value("elementeditor/state");
if (state.isValid()) {
restoreState(state.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 (!restoreState(state.toByteArray())) {
settings.remove("elementeditor/state");
}
}
}
/**
* @brief QETElementEditor::writeSettings
* Write some setting of this widget in the
+1
View File
@@ -116,6 +116,7 @@ class QETElementEditor : public QMainWindow
private:
bool canClose();
void readSettings();
void readSettingsState();
void writeSettings() const;
void setupActions();
void updateAction();
+2
View File
@@ -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
}
/**
+20 -5
View File
@@ -135,8 +135,9 @@ QETDiagramEditor::QETDiagramEditor(const QStringList &files, QWidget *parent) :
connect(&m_workspace, &QMdiArea::subWindowActivated, this, &QETDiagramEditor::subWindowActivated);
connect(QApplication::clipboard(), &QClipboard::dataChanged, this, &QETDiagramEditor::slot_updatePasteAction);
readSettings();
readSettings(); // restoreGeometry before show()
show();
readSettingsState(); // restoreState() must be called after show() in Qt6
//If valid file path is given as arguments
uint opened_projects = 0;
@@ -2227,10 +2228,6 @@ void QETDiagramEditor::readSettings()
QVariant geometry = settings.value("diagrameditor/geometry");
if (geometry.isValid()) restoreGeometry(geometry.toByteArray());
// etat de la fenetre (barres d'outils, docks...)
QVariant state = settings.value("diagrameditor/state");
if (state.isValid()) restoreState(state.toByteArray());
// gestion des projets (onglets ou fenetres)
bool tabbed = settings.value("diagrameditor/viewmode", "tabbed") == "tabbed";
if (tabbed) {
@@ -2240,6 +2237,24 @@ void QETDiagramEditor::readSettings()
}
}
/**
@brief QETDiagramEditor::readSettingsState
Restore the window state (docks, toolbars).
Must be called AFTER show() in Qt6 for restoreState() to work correctly.
*/
void QETDiagramEditor::readSettingsState()
{
QSettings settings;
// etat de la fenetre (barres d'outils, docks...)
QVariant state = settings.value("diagrameditor/state");
if (state.isValid()) {
if (!restoreState(state.toByteArray())) {
settings.remove("diagrameditor/state");
}
}
}
/**
@brief QETDiagramEditor::writeSettings
Write the settings
+1
View File
@@ -127,6 +127,7 @@ class QETDiagramEditor : public QETMainWindow
void setWindowedMode();
void setTabbedMode();
void readSettings();
void readSettingsState();
void writeSettings();
void activateProject(QETProject *);
void activateProject(ProjectView *);
+18 -2
View File
@@ -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,10 +646,25 @@ 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()) restoreState(state.toByteArray());
if (state.isValid()) {
if (!restoreState(state.toByteArray())) {
settings.remove("titleblocktemplateeditor/state");
}
}
}
/**
+1
View File
@@ -108,6 +108,7 @@ class QETTitleBlockTemplateEditor : public QETMainWindow {
public slots:
void readSettings();
void readSettingsState();
void writeSettings();
void selectedCellsChanged(const QList<TitleBlockCell *>&);
void duplicateCurrentLocation();