summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZhao Yuhang <[email protected]>2025-06-21 15:19:36 +0800
committerZhao Yuhang <[email protected]>2025-06-26 11:51:38 +0000
commit635f79f16300ed4b53a6665c81d0a37a2de9d78e (patch)
tree38f2186054dc8243e3176140534f9908497b0ce1
parentaaaee137c25892bb5ee930c5fb6dac43d217fd71 (diff)
Windows QPA: fix PMv2 detect logicHEADdev
Before this patch, in QWindowsContext::setProcessDpiAwareness, there are some conditions that will make this function return early, in this case, QWindowsContextPrivate::m_v2DpiAware won't be updated to the correct value (it's initially set to false and we want it to be true in these cases), this is absolutely wrong. Luckily, this issue just makes QPA call enableNonClientDpiScaling() in unnecessary situations and that is harmless. But it's also better to fix this issue. Change-Id: I04d70d5d83b898a3cd2856d504bcd3f5519427b4 Reviewed-by: Oliver Wolff <[email protected]>
-rw-r--r--src/plugins/platforms/windows/qwindowscontext.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp
index c484d97479a..38b3bdadd35 100644
--- a/src/plugins/platforms/windows/qwindowscontext.cpp
+++ b/src/plugins/platforms/windows/qwindowscontext.cpp
@@ -43,6 +43,7 @@
#include <QtCore/qsysinfo.h>
#include <QtCore/qscopedpointer.h>
#include <QtCore/quuid.h>
+#include <QtCore/qscopeguard.h>
#include <QtCore/private/qwinregistry_p.h>
#if QT_CONFIG(cpp_winrt)
# include <QtCore/private/qfactorycacheregistration_p.h>
@@ -428,6 +429,10 @@ QDebug operator<<(QDebug d, QtWindows::DpiAwareness dpiAwareness)
bool QWindowsContext::setProcessDpiAwareness(QtWindows::DpiAwareness dpiAwareness)
{
qCDebug(lcQpaWindow) << __FUNCTION__ << dpiAwareness;
+ [[maybe_unused]] const auto updatePMv2Status = qScopeGuard([](){
+ QWindowsContextPrivate::m_v2DpiAware =
+ processDpiAwareness() == QtWindows::DpiAwareness::PerMonitorVersion2;
+ });
if (processDpiAwareness() == dpiAwareness)
return true;
const auto context = qtDpiAwarenessToDpiAwarenessContext(dpiAwareness);
@@ -445,8 +450,6 @@ bool QWindowsContext::setProcessDpiAwareness(QtWindows::DpiAwareness dpiAwarenes
<< "(https://doc.qt.io/qt-6/highdpi.html#configuring-windows).";
return false;
}
- QWindowsContextPrivate::m_v2DpiAware
- = processDpiAwareness() == QtWindows::DpiAwareness::PerMonitorVersion2;
return true;
}