diff options
author | Maximilian Goldstein <max.goldstein@qt.io> | 2021-04-16 12:55:08 +0200 |
---|---|---|
committer | Maximilian Goldstein <max.goldstein@qt.io> | 2021-04-16 14:29:55 +0200 |
commit | 585420ce0279fb986e28f0b4ab9a0d50b8cfaf8e (patch) | |
tree | 9ff0e46c475ef0d08259f140fa99ce1b1d6cd26d /src/plugins | |
parent | b50f9b67b717eaf933e3e8c58b38894177471a7c (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.cpp | 18 | ||||
-rw-r--r-- | src/plugins/qmltooling/qmldbg_preview/qqmlpreviewposition.h | 1 |
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, |