diff options
author | Yuhang Zhao <2546789017@qq.com> | 2021-07-29 14:58:34 +0800 |
---|---|---|
committer | Yuhang Zhao <2546789017@qq.com> | 2021-11-24 09:16:38 +0800 |
commit | e75b1dfe380e854ed5ceaf5933740e3759a22aaf (patch) | |
tree | 85f20bfeab34768a1eca2675312aa909e44dc14a /src/plugins/platforms/windows/qwindowswindow.cpp | |
parent | f5f7f78766d62b7192b98b96bbd68dab1961e54e (diff) |
Windows QPA: Further cleanup of pre-Win10 code
Mostly a removal of dynamically loaded Win32 APIs.
Since Qt 6's minimum supported platform is Win10 1809
(10.0.17763, code name RS5), all these functions will
be available and no need to resolve them at run-time.
Things not remove:
WinTab functions in "qwindowstabletsupport.cpp".
Not my familiar area, so not touch it.
Pick-to: 6.2
Task-number: QTBUG-84432
Change-Id: I7ad6c3bc8376f6c0e3ac90f34e22f7628efeb694
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Diffstat (limited to 'src/plugins/platforms/windows/qwindowswindow.cpp')
-rw-r--r-- | src/plugins/platforms/windows/qwindowswindow.cpp | 35 |
1 files changed, 13 insertions, 22 deletions
diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp index c4a85ab21e..53fbc167da 100644 --- a/src/plugins/platforms/windows/qwindowswindow.cpp +++ b/src/plugins/platforms/windows/qwindowswindow.cpp @@ -65,7 +65,6 @@ #include <QtGui/qwindow.h> #include <QtGui/qregion.h> #include <QtGui/qopenglcontext.h> -#include <private/qsystemlibrary_p.h> #include <private/qwindow_p.h> // QWINDOWSIZE_MAX #include <private/qguiapplication_p.h> #include <private/qhighdpiscaling_p.h> @@ -73,7 +72,6 @@ #include <QtCore/qdebug.h> #include <QtCore/qlibraryinfo.h> -#include <QtCore/qoperatingsystemversion.h> #include <dwmapi.h> @@ -81,6 +79,8 @@ #include "qwindowsvulkaninstance.h" #endif +#include <shellscalingapi.h> + QT_BEGIN_NAMESPACE using QWindowCreationContextPtr = QSharedPointer<QWindowCreationContext>; @@ -436,18 +436,14 @@ static inline void updateGLWindowSettings(const QWindow *w, HWND hwnd, Qt::Windo static QMargins invisibleMargins(QPoint screenPoint) { - if (QOperatingSystemVersion::current() >= QOperatingSystemVersion::Windows10) { - POINT pt = {screenPoint.x(), screenPoint.y()}; - if (HMONITOR hMonitor = MonitorFromPoint(pt, MONITOR_DEFAULTTONULL)) { - if (QWindowsContext::shcoredll.isValid()) { - UINT dpiX; - UINT dpiY; - if (SUCCEEDED(QWindowsContext::shcoredll.getDpiForMonitor(hMonitor, 0, &dpiX, &dpiY))) { - const qreal sc = (dpiX - 96) / 96.0; - const int gap = 7 + qRound(5*sc) - int(sc); - return QMargins(gap, 0, gap, gap); - } - } + POINT pt = {screenPoint.x(), screenPoint.y()}; + if (HMONITOR hMonitor = MonitorFromPoint(pt, MONITOR_DEFAULTTONULL)) { + UINT dpiX; + UINT dpiY; + if (SUCCEEDED(GetDpiForMonitor(hMonitor, MDT_EFFECTIVE_DPI, &dpiX, &dpiY))) { + const qreal sc = (dpiX - 96) / 96.0; + const int gap = 7 + qRound(5*sc) - int(sc); + return QMargins(gap, 0, gap, gap); } } return QMargins(); @@ -930,12 +926,9 @@ QMargins QWindowsGeometryHint::frameOnPrimaryScreen(HWND hwnd) QMargins QWindowsGeometryHint::frame(DWORD style, DWORD exStyle, qreal dpi) { - if (QWindowsContext::user32dll.adjustWindowRectExForDpi == nullptr) - return frameOnPrimaryScreen(style, exStyle); RECT rect = {0,0,0,0}; style &= ~DWORD(WS_OVERLAPPED); // Not permitted, see docs. - if (QWindowsContext::user32dll.adjustWindowRectExForDpi(&rect, style, FALSE, exStyle, - unsigned(qRound(dpi))) == FALSE) { + if (AdjustWindowRectExForDpi(&rect, style, FALSE, exStyle, unsigned(qRound(dpi))) == FALSE) { qErrnoWarning("%s: AdjustWindowRectExForDpi failed", __FUNCTION__); } const QMargins result(qAbs(rect.left), qAbs(rect.top), @@ -965,8 +958,7 @@ QMargins QWindowsGeometryHint::frame(const QWindow *w, const QRect &geometry, { if (!w->isTopLevel() || w->flags().testFlag(Qt::FramelessWindowHint)) return {}; - if (!QWindowsContext::user32dll.adjustWindowRectExForDpi - || QWindowsScreenManager::isSingleScreen() + if (QWindowsScreenManager::isSingleScreen() || !QWindowsContext::shouldHaveNonClientDpiScaling(w)) { return frameOnPrimaryScreen(style, exStyle); } @@ -1417,8 +1409,7 @@ void QWindowsWindow::initialize() if (obtainedScreen && screen() != obtainedScreen) QWindowSystemInterface::handleWindowScreenChanged<QWindowSystemInterface::SynchronousDelivery>(w, obtainedScreen->screen()); } - QWindowsWindow::setSavedDpi(QWindowsContext::user32dll.getDpiForWindow ? - QWindowsContext::user32dll.getDpiForWindow(handle()) : 96); + QWindowsWindow::setSavedDpi(GetDpiForWindow(handle())); } QSurfaceFormat QWindowsWindow::format() const |