diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-01-07 15:16:31 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-01-08 13:43:47 +0100 |
commit | 867b11596be8bb5864650f98698d1015c4f26812 (patch) | |
tree | 482e51550a005556ff5b3a926cb2a38cf246963c /src/plugins/platforms | |
parent | 423e6c3635a5e0f88f38cbf0af7474bc62b26323 (diff) |
Windows QPA: Fix missing QScreen change updates
Remove the logic compressing WM_DISPLAYCHANGE signals by the
WParam/LParam since it also triggers when the geometry is changed
by rearranging screens.
Fixes: QTBUG-79442
Change-Id: I00042c9e687bdb67fc17d6c507818b79a7aee0a2
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r-- | src/plugins/platforms/windows/qwindowscontext.cpp | 3 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowsscreen.cpp | 24 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowsscreen.h | 4 |
3 files changed, 2 insertions, 29 deletions
diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp index b2cbae408c..67d38a95ce 100644 --- a/src/plugins/platforms/windows/qwindowscontext.cpp +++ b/src/plugins/platforms/windows/qwindowscontext.cpp @@ -1235,7 +1235,8 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message, if (QWindowsTheme *t = QWindowsTheme::instance()) t->displayChanged(); QWindowsWindow::displayChanged(); - return d->m_screenManager.handleDisplayChange(wParam, lParam); + d->m_screenManager.handleScreenChanges(); + return false; case QtWindows::SettingChangedEvent: { QWindowsWindow::settingsChanged(); const bool darkMode = QWindowsTheme::queryDarkMode(); diff --git a/src/plugins/platforms/windows/qwindowsscreen.cpp b/src/plugins/platforms/windows/qwindowsscreen.cpp index cddc384418..19557bfcd0 100644 --- a/src/plugins/platforms/windows/qwindowsscreen.cpp +++ b/src/plugins/platforms/windows/qwindowsscreen.cpp @@ -537,30 +537,6 @@ bool QWindowsScreenManager::isSingleScreen() return QWindowsContext::instance()->screenManager().screens().size() < 2; } -/*! - \brief Triggers synchronization of screens (WM_DISPLAYCHANGE). - - Subsequent events are compressed since WM_DISPLAYCHANGE is sent to - each top level window. -*/ - -bool QWindowsScreenManager::handleDisplayChange(WPARAM wParam, LPARAM lParam) -{ - const int newDepth = int(wParam); - const WORD newHorizontalResolution = LOWORD(lParam); - const WORD newVerticalResolution = HIWORD(lParam); - if (newDepth != m_lastDepth || newHorizontalResolution != m_lastHorizontalResolution - || newVerticalResolution != m_lastVerticalResolution) { - m_lastDepth = newDepth; - m_lastHorizontalResolution = newHorizontalResolution; - m_lastVerticalResolution = newVerticalResolution; - qCDebug(lcQpaWindows) << __FUNCTION__ << "Depth=" << newDepth - << ", resolution " << newHorizontalResolution << 'x' << newVerticalResolution; - handleScreenChanges(); - } - return false; -} - static inline int indexOfMonitor(const QWindowsScreenManager::WindowsScreenList &screens, const QString &monitorName) { diff --git a/src/plugins/platforms/windows/qwindowsscreen.h b/src/plugins/platforms/windows/qwindowsscreen.h index 1989934ad4..2052648933 100644 --- a/src/plugins/platforms/windows/qwindowsscreen.h +++ b/src/plugins/platforms/windows/qwindowsscreen.h @@ -133,7 +133,6 @@ public: void clearScreens(); bool handleScreenChanges(); - bool handleDisplayChange(WPARAM wParam, LPARAM lParam); const WindowsScreenList &screens() const { return m_screens; } const QWindowsScreen *screenAtDp(const QPoint &p) const; @@ -145,9 +144,6 @@ private: void removeScreen(int index); WindowsScreenList m_screens; - int m_lastDepth = -1; - WORD m_lastHorizontalResolution = 0; - WORD m_lastVerticalResolution = 0; }; QT_END_NAMESPACE |