From 1fbe8242ece70fe5aa2b50e9a782ec509b163b78 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 11 Jan 2012 11:49:35 +0100 Subject: QStyleHelper: Base DPI-calculation on QScreen. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Use qt_defaultDpiX() to obtain the resolution, which obtains it from QScreen. This implies that for X11, which previously used a hardcoded default of 96 DPI, the real resolution will be used (typically 75). - Since many tests (layouts, graphicsview) contain test data for 96 DPI, add an attribute to QCoreApplication making it possible to set the resolution to 96 DPI for testing. Change-Id: I77c8233a96b0d75de07406f58d48886a89c3de06 Reviewed-by: Samuel Rødal --- src/corelib/global/qnamespace.h | 3 +-- src/gui/text/qfont.cpp | 32 ++++++++++++++------------------ src/testlib/qtest.h | 4 ++++ src/widgets/styles/qstylehelper.cpp | 23 +++-------------------- 4 files changed, 22 insertions(+), 40 deletions(-) diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h index f584a26dfc..d3b048579f 100644 --- a/src/corelib/global/qnamespace.h +++ b/src/corelib/global/qnamespace.h @@ -479,8 +479,7 @@ public: AA_MacPluginApplication = 5, AA_DontUseNativeMenuBar = 6, AA_MacDontSwapCtrlAndMeta = 7, - AA_S60DontConstructApplicationPanes = 8, - AA_S60DisablePartialScreenInputMode = 9, + AA_Use96Dpi = 8, AA_X11InitThreads = 10, // Add new attributes before this line diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp index 5bf9094615..1ac398967d 100644 --- a/src/gui/text/qfont.cpp +++ b/src/gui/text/qfont.cpp @@ -138,36 +138,32 @@ extern bool qt_is_gui_used; Q_GUI_EXPORT int qt_defaultDpiX() { + if (qApp->testAttribute(Qt::AA_Use96Dpi)) + return 96; + if (!qt_is_gui_used) return 75; - int dpi; - QScreen *screen = QGuiApplication::primaryScreen(); - if (screen) { - dpi = qRound(screen->logicalDotsPerInchX()); - } else { - //PI has not been initialised, or it is being initialised. Give a default dpi - dpi = 100; - } + if (const QScreen *screen = QGuiApplication::primaryScreen()) + return qRound(screen->logicalDotsPerInchX()); - return dpi; + //PI has not been initialised, or it is being initialised. Give a default dpi + return 100; } Q_GUI_EXPORT int qt_defaultDpiY() { + if (qApp->testAttribute(Qt::AA_Use96Dpi)) + return 96; + if (!qt_is_gui_used) return 75; - int dpi; - QScreen *screen = QGuiApplication::primaryScreen(); - if (screen) { - dpi = qRound(screen->logicalDotsPerInchY()); - } else { - //PI has not been initialised, or it is being initialised. Give a default dpi - dpi = 100; - } + if (const QScreen *screen = QGuiApplication::primaryScreen()) + return qRound(screen->logicalDotsPerInchY()); - return dpi; + //PI has not been initialised, or it is being initialised. Give a default dpi + return 100; } Q_GUI_EXPORT int qt_defaultDpi() diff --git a/src/testlib/qtest.h b/src/testlib/qtest.h index 53b29e1064..da3a836636 100644 --- a/src/testlib/qtest.h +++ b/src/testlib/qtest.h @@ -254,6 +254,7 @@ int main(int argc, char *argv[]) \ int main(int argc, char *argv[]) \ { \ QApplication app(argc, argv); \ + app.setAttribute(Qt::AA_Use96Dpi, true); \ QTEST_DISABLE_KEYPAD_NAVIGATION \ TestObject tc; \ return QTest::qExec(&tc, argc, argv); \ @@ -267,6 +268,7 @@ int main(int argc, char *argv[]) \ int main(int argc, char *argv[]) \ { \ QGuiApplication app(argc, argv); \ + app.setAttribute(Qt::AA_Use96Dpi, true); \ TestObject tc; \ return QTest::qExec(&tc, argc, argv); \ } @@ -277,6 +279,7 @@ int main(int argc, char *argv[]) \ int main(int argc, char *argv[]) \ { \ QCoreApplication app(argc, argv); \ + app.setAttribute(Qt::AA_Use96Dpi, true); \ TestObject tc; \ return QTest::qExec(&tc, argc, argv); \ } @@ -287,6 +290,7 @@ int main(int argc, char *argv[]) \ int main(int argc, char *argv[]) \ { \ QCoreApplication app(argc, argv); \ + app.setAttribute(Qt::AA_Use96Dpi, true); \ TestObject tc; \ return QTest::qExec(&tc, argc, argv); \ } diff --git a/src/widgets/styles/qstylehelper.cpp b/src/widgets/styles/qstylehelper.cpp index 823d29bc83..8f2d7364c1 100644 --- a/src/widgets/styles/qstylehelper.cpp +++ b/src/widgets/styles/qstylehelper.cpp @@ -46,17 +46,13 @@ #include #include -#if defined(Q_WS_WIN) -#include "qt_windows.h" -#elif defined(Q_WS_MAC) -#include -#endif - #include "qstylehelper_p.h" #include QT_BEGIN_NAMESPACE +Q_GUI_EXPORT int qt_defaultDpiX(); + namespace QStyleHelper { QString uniqueName(const QString &key, const QStyleOption *option, const QSize &size) @@ -81,20 +77,7 @@ QString uniqueName(const QString &key, const QStyleOption *option, const QSize & qreal dpiScaled(qreal value) { - static qreal scale = -1; - if (scale < 0) { - scale = 1.0; -#if defined(Q_WS_WIN) - { - HDC hdcScreen = GetDC(0); - int dpi = GetDeviceCaps(hdcScreen, LOGPIXELSX); - ReleaseDC(0, hdcScreen); - scale = dpi/96.0; - } -#elif defined(Q_WS_MAC) - scale = qt_mac_get_scalefactor(); -#endif - } + static const qreal scale = qreal(qt_defaultDpiX()) / 96.0; return value * scale; } -- cgit v1.2.3