Designer: Use QWidget::save/restoreGeometry() to position resource dialogs.
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Tue, 16 Dec 2014 08:09:43 +0000 (09:09 +0100)
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Tue, 16 Dec 2014 10:53:45 +0000 (11:53 +0100)
Using QRect as was done before might cause the dialogs to be
restored out of screen if a screen is removed from a multimonitor
setup.

Task-number: QTBUG-43374
Change-Id: I48bb6e747da8042a8433d26e5e3bed267126ed3b
Reviewed-by: Jarek Kobus <jaroslaw.kobus@theqtcompany.com>
src/designer/src/lib/shared/qtresourceeditordialog.cpp
src/designer/src/lib/shared/qtresourceview.cpp

index 6d44f3f..a6d9a98 100644 (file)
@@ -2063,8 +2063,9 @@ QtResourceEditorDialog::QtResourceEditorDialog(QDesignerFormEditorInterface *cor
     settings->beginGroup(QLatin1String(QrcDialogC));
 
     d_ptr->m_ui.splitter->restoreState(settings->value(QLatin1String(SplitterPosition)).toByteArray());
-    if (settings->contains(QLatin1String(Geometry)))
-        setGeometry(settings->value(QLatin1String(Geometry)).toRect());
+    const QVariant geometry = settings->value(QLatin1String(Geometry));
+    if (geometry.type() == QVariant::ByteArray) // Used to be a QRect up until 5.4.0, QTBUG-43374
+        restoreGeometry(geometry.toByteArray());
 
     settings->endGroup();
 }
@@ -2075,7 +2076,7 @@ QtResourceEditorDialog::~QtResourceEditorDialog()
     settings->beginGroup(QLatin1String(QrcDialogC));
 
     settings->setValue(QLatin1String(SplitterPosition), d_ptr->m_ui.splitter->saveState());
-    settings->setValue(QLatin1String(Geometry), geometry());
+    settings->setValue(QLatin1String(Geometry), saveGeometry());
     settings->endGroup();
 }
 
index 277371b..4a7159a 100644 (file)
@@ -870,8 +870,9 @@ QtResourceViewDialog::QtResourceViewDialog(QDesignerFormEditorInterface *core, Q
     QDesignerSettingsInterface *settings = core->settingsManager();
     settings->beginGroup(QLatin1String(ResourceViewDialogC));
 
-    if (settings->contains(QLatin1String(Geometry)))
-        setGeometry(settings->value(QLatin1String(Geometry)).toRect());
+    const QVariant geometry = settings->value(QLatin1String(Geometry));
+    if (geometry.type() == QVariant::ByteArray) // Used to be a QRect up until 5.4.0, QTBUG-43374.
+        restoreGeometry(geometry.toByteArray());
 
     settings->endGroup();
 }
@@ -881,7 +882,7 @@ QtResourceViewDialog::~QtResourceViewDialog()
     QDesignerSettingsInterface *settings = d_ptr->m_core->settingsManager();
     settings->beginGroup(QLatin1String(ResourceViewDialogC));
 
-    settings->setValue(QLatin1String(Geometry), geometry());
+    settings->setValue(QLatin1String(Geometry), saveGeometry());
 
     settings->endGroup();
 }