From f8e26598e9d4071df74c1c5d9575e8e7e259009b Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 16 Dec 2014 09:09:43 +0100 Subject: [PATCH] Designer: Use QWidget::save/restoreGeometry() to position resource dialogs. 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 --- src/designer/src/lib/shared/qtresourceeditordialog.cpp | 7 ++++--- src/designer/src/lib/shared/qtresourceview.cpp | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/designer/src/lib/shared/qtresourceeditordialog.cpp b/src/designer/src/lib/shared/qtresourceeditordialog.cpp index 6d44f3f..a6d9a98 100644 --- a/src/designer/src/lib/shared/qtresourceeditordialog.cpp +++ b/src/designer/src/lib/shared/qtresourceeditordialog.cpp @@ -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(); } diff --git a/src/designer/src/lib/shared/qtresourceview.cpp b/src/designer/src/lib/shared/qtresourceview.cpp index 277371b..4a7159a 100644 --- a/src/designer/src/lib/shared/qtresourceview.cpp +++ b/src/designer/src/lib/shared/qtresourceview.cpp @@ -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(); } -- 2.7.4