QStyleHelper: Base DPI-calculation on QScreen.
- 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 <samuel.rodal@nokia.com>
This commit is contained in:
parent
f65a10b733
commit
1fbe8242ec
@ -479,8 +479,7 @@ public:
|
|||||||
AA_MacPluginApplication = 5,
|
AA_MacPluginApplication = 5,
|
||||||
AA_DontUseNativeMenuBar = 6,
|
AA_DontUseNativeMenuBar = 6,
|
||||||
AA_MacDontSwapCtrlAndMeta = 7,
|
AA_MacDontSwapCtrlAndMeta = 7,
|
||||||
AA_S60DontConstructApplicationPanes = 8,
|
AA_Use96Dpi = 8,
|
||||||
AA_S60DisablePartialScreenInputMode = 9,
|
|
||||||
AA_X11InitThreads = 10,
|
AA_X11InitThreads = 10,
|
||||||
|
|
||||||
// Add new attributes before this line
|
// Add new attributes before this line
|
||||||
|
@ -138,36 +138,32 @@ extern bool qt_is_gui_used;
|
|||||||
|
|
||||||
Q_GUI_EXPORT int qt_defaultDpiX()
|
Q_GUI_EXPORT int qt_defaultDpiX()
|
||||||
{
|
{
|
||||||
|
if (qApp->testAttribute(Qt::AA_Use96Dpi))
|
||||||
|
return 96;
|
||||||
|
|
||||||
if (!qt_is_gui_used)
|
if (!qt_is_gui_used)
|
||||||
return 75;
|
return 75;
|
||||||
|
|
||||||
int dpi;
|
if (const QScreen *screen = QGuiApplication::primaryScreen())
|
||||||
QScreen *screen = QGuiApplication::primaryScreen();
|
return qRound(screen->logicalDotsPerInchX());
|
||||||
if (screen) {
|
|
||||||
dpi = qRound(screen->logicalDotsPerInchX());
|
|
||||||
} else {
|
|
||||||
//PI has not been initialised, or it is being initialised. Give a default dpi
|
|
||||||
dpi = 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
return dpi;
|
//PI has not been initialised, or it is being initialised. Give a default dpi
|
||||||
|
return 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
Q_GUI_EXPORT int qt_defaultDpiY()
|
Q_GUI_EXPORT int qt_defaultDpiY()
|
||||||
{
|
{
|
||||||
|
if (qApp->testAttribute(Qt::AA_Use96Dpi))
|
||||||
|
return 96;
|
||||||
|
|
||||||
if (!qt_is_gui_used)
|
if (!qt_is_gui_used)
|
||||||
return 75;
|
return 75;
|
||||||
|
|
||||||
int dpi;
|
if (const QScreen *screen = QGuiApplication::primaryScreen())
|
||||||
QScreen *screen = QGuiApplication::primaryScreen();
|
return qRound(screen->logicalDotsPerInchY());
|
||||||
if (screen) {
|
|
||||||
dpi = qRound(screen->logicalDotsPerInchY());
|
|
||||||
} else {
|
|
||||||
//PI has not been initialised, or it is being initialised. Give a default dpi
|
|
||||||
dpi = 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
return dpi;
|
//PI has not been initialised, or it is being initialised. Give a default dpi
|
||||||
|
return 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
Q_GUI_EXPORT int qt_defaultDpi()
|
Q_GUI_EXPORT int qt_defaultDpi()
|
||||||
|
@ -254,6 +254,7 @@ int main(int argc, char *argv[]) \
|
|||||||
int main(int argc, char *argv[]) \
|
int main(int argc, char *argv[]) \
|
||||||
{ \
|
{ \
|
||||||
QApplication app(argc, argv); \
|
QApplication app(argc, argv); \
|
||||||
|
app.setAttribute(Qt::AA_Use96Dpi, true); \
|
||||||
QTEST_DISABLE_KEYPAD_NAVIGATION \
|
QTEST_DISABLE_KEYPAD_NAVIGATION \
|
||||||
TestObject tc; \
|
TestObject tc; \
|
||||||
return QTest::qExec(&tc, argc, argv); \
|
return QTest::qExec(&tc, argc, argv); \
|
||||||
@ -267,6 +268,7 @@ int main(int argc, char *argv[]) \
|
|||||||
int main(int argc, char *argv[]) \
|
int main(int argc, char *argv[]) \
|
||||||
{ \
|
{ \
|
||||||
QGuiApplication app(argc, argv); \
|
QGuiApplication app(argc, argv); \
|
||||||
|
app.setAttribute(Qt::AA_Use96Dpi, true); \
|
||||||
TestObject tc; \
|
TestObject tc; \
|
||||||
return QTest::qExec(&tc, argc, argv); \
|
return QTest::qExec(&tc, argc, argv); \
|
||||||
}
|
}
|
||||||
@ -277,6 +279,7 @@ int main(int argc, char *argv[]) \
|
|||||||
int main(int argc, char *argv[]) \
|
int main(int argc, char *argv[]) \
|
||||||
{ \
|
{ \
|
||||||
QCoreApplication app(argc, argv); \
|
QCoreApplication app(argc, argv); \
|
||||||
|
app.setAttribute(Qt::AA_Use96Dpi, true); \
|
||||||
TestObject tc; \
|
TestObject tc; \
|
||||||
return QTest::qExec(&tc, argc, argv); \
|
return QTest::qExec(&tc, argc, argv); \
|
||||||
}
|
}
|
||||||
@ -287,6 +290,7 @@ int main(int argc, char *argv[]) \
|
|||||||
int main(int argc, char *argv[]) \
|
int main(int argc, char *argv[]) \
|
||||||
{ \
|
{ \
|
||||||
QCoreApplication app(argc, argv); \
|
QCoreApplication app(argc, argv); \
|
||||||
|
app.setAttribute(Qt::AA_Use96Dpi, true); \
|
||||||
TestObject tc; \
|
TestObject tc; \
|
||||||
return QTest::qExec(&tc, argc, argv); \
|
return QTest::qExec(&tc, argc, argv); \
|
||||||
}
|
}
|
||||||
|
@ -46,17 +46,13 @@
|
|||||||
#include <private/qstyle_p.h>
|
#include <private/qstyle_p.h>
|
||||||
#include <qmath.h>
|
#include <qmath.h>
|
||||||
|
|
||||||
#if defined(Q_WS_WIN)
|
|
||||||
#include "qt_windows.h"
|
|
||||||
#elif defined(Q_WS_MAC)
|
|
||||||
#include <private/qt_cocoa_helpers_mac_p.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "qstylehelper_p.h"
|
#include "qstylehelper_p.h"
|
||||||
#include <qstringbuilder.h>
|
#include <qstringbuilder.h>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
Q_GUI_EXPORT int qt_defaultDpiX();
|
||||||
|
|
||||||
namespace QStyleHelper {
|
namespace QStyleHelper {
|
||||||
|
|
||||||
QString uniqueName(const QString &key, const QStyleOption *option, const QSize &size)
|
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)
|
qreal dpiScaled(qreal value)
|
||||||
{
|
{
|
||||||
static qreal scale = -1;
|
static const qreal scale = qreal(qt_defaultDpiX()) / 96.0;
|
||||||
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
|
|
||||||
}
|
|
||||||
return value * scale;
|
return value * scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user