aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorMaximilian Goldstein <max.goldstein@qt.io>2021-04-16 12:55:08 +0200
committerMaximilian Goldstein <max.goldstein@qt.io>2021-04-16 14:29:55 +0200
commit585420ce0279fb986e28f0b4ab9a0d50b8cfaf8e (patch)
tree9ff0e46c475ef0d08259f140fa99ce1b1d6cd26d /src/plugins
parentb50f9b67b717eaf933e3e8c58b38894177471a7c (diff)
qmlpreview: Fix preview position is out of scope warning
When the position was restored with setPosition() in many cases the window size was invalid leading to a false "preview position is out of scope" warning. Task-number: QTBUG-83391 Change-Id: I8cdbc7701585b3cce526998fcdd25ed3c16fecbc Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/qmltooling/qmldbg_preview/qqmlpreviewposition.cpp18
-rw-r--r--src/plugins/qmltooling/qmldbg_preview/qqmlpreviewposition.h1
2 files changed, 11 insertions, 8 deletions
diff --git a/src/plugins/qmltooling/qmldbg_preview/qqmlpreviewposition.cpp b/src/plugins/qmltooling/qmldbg_preview/qqmlpreviewposition.cpp
index 4da6b71b40..e30ff04443 100644
--- a/src/plugins/qmltooling/qmldbg_preview/qqmlpreviewposition.cpp
+++ b/src/plugins/qmltooling/qmldbg_preview/qqmlpreviewposition.cpp
@@ -111,7 +111,7 @@ void QQmlPreviewPosition::takePosition(QWindow *window, InitializeState state)
auto screen = window->screen();
auto nativePosition = QHighDpiScaling::mapPositionToNative(window->framePosition(),
screen->handle());
- m_lastWindowPosition = {screen->name(), nativePosition};
+ m_lastWindowPosition = { screen->name(), nativePosition, window->size() };
m_savePositionTimer.start();
}
@@ -166,11 +166,8 @@ QByteArray QQmlPreviewPosition::fromPositionToByteArray(
const quint16 majorVersion = 1;
const quint16 minorVersion = 0;
- stream << majorVersion
- << minorVersion
- << m_currentInitScreensData
- << position.screenName
- << position.nativePosition;
+ stream << majorVersion << minorVersion << m_currentInitScreensData << position.screenName
+ << position.nativePosition << position.size;
return array;
}
@@ -203,7 +200,11 @@ void QQmlPreviewPosition::readLastPositionFromByteArray(const QByteArray &array)
stream >> nativePosition;
if (nativePosition.isNull())
return;
- m_lastWindowPosition = {nameOfScreen, nativePosition};
+
+ QSize size;
+ stream >> size;
+
+ m_lastWindowPosition = { nameOfScreen, nativePosition, size };
}
void QQmlPreviewPosition::setPosition(const QQmlPreviewPosition::Position &position,
@@ -215,7 +216,8 @@ void QQmlPreviewPosition::setPosition(const QQmlPreviewPosition::Position &posit
window->setScreen(screen);
const auto point = QHighDpiScaling::mapPositionFromNative(position.nativePosition,
screen->handle());
- const QRect geometry(point, window->size());
+
+ const QRect geometry(point, position.size);
if (screen->virtualGeometry().contains(geometry))
window->setFramePosition(point);
else
diff --git a/src/plugins/qmltooling/qmldbg_preview/qqmlpreviewposition.h b/src/plugins/qmltooling/qmldbg_preview/qqmlpreviewposition.h
index 9d84170948..dde6f974d2 100644
--- a/src/plugins/qmltooling/qmldbg_preview/qqmlpreviewposition.h
+++ b/src/plugins/qmltooling/qmldbg_preview/qqmlpreviewposition.h
@@ -76,6 +76,7 @@ public:
public:
QString screenName;
QPoint nativePosition;
+ QSize size;
};
enum InitializeState {
InitializePosition,