PKGBUILDs/qt6-base/mingw-w64/0013-Revert-Port-default-fo...

81 lines
3.4 KiB
Diff

From 52717f78f818d16f3a5921e0a40244a29e952d81 Mon Sep 17 00:00:00 2001
From: Martchus <martchus@gmx.net>
Date: Tue, 6 Dec 2022 21:49:55 +0100
Subject: [PATCH 13/13] Revert "Port default font resolve to
SystemParametersInfoForDpi"
This reverts commit 45358c29d53242bf5ff401d06eebec53ffc6c4c8.
---
src/gui/text/windows/qwindowsfontdatabasebase.cpp | 15 +++++++++++----
src/gui/text/windows/qwindowsfontdatabasebase_p.h | 1 +
src/plugins/platforms/windows/qwindowsscreen.cpp | 5 ++++-
3 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/src/gui/text/windows/qwindowsfontdatabasebase.cpp b/src/gui/text/windows/qwindowsfontdatabasebase.cpp
index f45678c65c..d05410cf5f 100644
--- a/src/gui/text/windows/qwindowsfontdatabasebase.cpp
+++ b/src/gui/text/windows/qwindowsfontdatabasebase.cpp
@@ -566,9 +566,16 @@ void QWindowsFontDatabaseBase::createDirectWriteFactory(IDWriteFactory **factory
}
#endif // directwrite && direct2d
+static int s_defaultVerticalDPI = 96; // Native Pixels
+
int QWindowsFontDatabaseBase::defaultVerticalDPI()
{
- return 96;
+ return s_defaultVerticalDPI;
+}
+
+void QWindowsFontDatabaseBase::setDefaultVerticalDPI(int d)
+{
+ s_defaultVerticalDPI = d;
}
LOGFONT QWindowsFontDatabaseBase::fontDefToLOGFONT(const QFontDef &request, const QString &faceName)
@@ -683,9 +690,9 @@ HFONT QWindowsFontDatabaseBase::systemFont()
QFont QWindowsFontDatabaseBase::systemDefaultFont()
{
// Qt 6: Obtain default GUI font (typically "Segoe UI, 9pt", see QTBUG-58610)
- NONCLIENTMETRICS ncm = {};
- ncm.cbSize = sizeof(ncm);
- SystemParametersInfoForDpi(SPI_GETNONCLIENTMETRICS, ncm.cbSize, &ncm, 0, defaultVerticalDPI());
+ NONCLIENTMETRICS ncm;
+ ncm.cbSize = FIELD_OFFSET(NONCLIENTMETRICS, lfMessageFont) + sizeof(LOGFONT);
+ SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ncm.cbSize , &ncm, 0);
const QFont systemFont = QWindowsFontDatabase::LOGFONT_to_QFont(ncm.lfMessageFont);
qCDebug(lcQpaFonts) << __FUNCTION__ << systemFont;
return systemFont;
diff --git a/src/gui/text/windows/qwindowsfontdatabasebase_p.h b/src/gui/text/windows/qwindowsfontdatabasebase_p.h
index 60acc5cb06..1451eed051 100644
--- a/src/gui/text/windows/qwindowsfontdatabasebase_p.h
+++ b/src/gui/text/windows/qwindowsfontdatabasebase_p.h
@@ -57,6 +57,7 @@ public:
QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference) override;
static int defaultVerticalDPI();
+ static void setDefaultVerticalDPI(int d);
static QSharedPointer<QWindowsFontEngineData> data();
#if QT_CONFIG(directwrite)
diff --git a/src/plugins/platforms/windows/qwindowsscreen.cpp b/src/plugins/platforms/windows/qwindowsscreen.cpp
index f15a7a870d..6f0b949b67 100644
--- a/src/plugins/platforms/windows/qwindowsscreen.cpp
+++ b/src/plugins/platforms/windows/qwindowsscreen.cpp
@@ -182,8 +182,11 @@ static bool monitorData(HMONITOR hMonitor, QWindowsScreenData *data)
// EnumDisplayMonitors (as opposed to EnumDisplayDevices) enumerates only
// virtual desktop screens.
data->flags |= QWindowsScreenData::VirtualDesktop;
- if (info.dwFlags & MONITORINFOF_PRIMARY)
+ if (info.dwFlags & MONITORINFOF_PRIMARY) {
data->flags |= QWindowsScreenData::PrimaryScreen;
+ if ((data->flags & QWindowsScreenData::LockScreen) == 0)
+ QWindowsFontDatabase::setDefaultVerticalDPI(data->dpi.second);
+ }
return true;
}
--
2.38.1