diff options
Diffstat (limited to 'src')
3 files changed, 15 insertions, 12 deletions
diff --git a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabasebase.cpp b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabasebase.cpp index e6dee54d84..568d1463e7 100644 --- a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabasebase.cpp +++ b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabasebase.cpp @@ -624,19 +624,16 @@ void QWindowsFontDatabaseBase::createDirectWriteFactory(IDWriteFactory **factory } #endif // !defined(QT_NO_DIRECTWRITE) +static int s_defaultVerticalDPI = 96; // Native Pixels + int QWindowsFontDatabaseBase::defaultVerticalDPI() { - static int vDPI = -1; - if (vDPI == -1) { - if (HDC defaultDC = GetDC(0)) { - vDPI = GetDeviceCaps(defaultDC, LOGPIXELSY); - ReleaseDC(0, defaultDC); - } else { - // FIXME: Resolve now or return 96 and keep unresolved? - vDPI = 96; - } - } - return vDPI; + return s_defaultVerticalDPI; +} + +void QWindowsFontDatabaseBase::setDefaultVerticalDPI(int d) +{ + s_defaultVerticalDPI = d; } LOGFONT QWindowsFontDatabaseBase::fontDefToLOGFONT(const QFontDef &request, const QString &faceName) diff --git a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabasebase_p.h b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabasebase_p.h index 5b9db5dede..55763f7c76 100644 --- a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabasebase_p.h +++ b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabasebase_p.h @@ -93,6 +93,8 @@ 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 !defined(QT_NO_DIRECTWRITE) static void createDirectWriteFactory(IDWriteFactory **factory); diff --git a/src/plugins/platforms/windows/qwindowsscreen.cpp b/src/plugins/platforms/windows/qwindowsscreen.cpp index 8850d8cdd4..689624ff2a 100644 --- a/src/plugins/platforms/windows/qwindowsscreen.cpp +++ b/src/plugins/platforms/windows/qwindowsscreen.cpp @@ -51,6 +51,7 @@ #include <QtGui/qguiapplication.h> #include <qpa/qwindowsysteminterface.h> #include <private/qhighdpiscaling_p.h> +#include <private/qwindowsfontdatabasebase_p.h> #include <QtGui/qscreen.h> #include <QtCore/qdebug.h> @@ -111,8 +112,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; } |