81 lines
3.4 KiB
Diff
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
|
|
|