From 9f14dc661e7cdac5435cf1463b1a595ea519fea2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=B8rgen=20Lind?= Date: Wed, 27 Apr 2011 17:29:10 +0200 Subject: [PATCH] Font (cherry picked from commit 050925ccac957dea3d4e138babdd7aa93925dffc) --- src/gui/kernel/qapplication.cpp | 13 +++++++++++++ src/gui/kernel/qapplication_p.h | 2 ++ src/gui/kernel/qguiapplication_qpa.cpp | 20 ++++++++++++++++++++ src/gui/kernel/qguiapplication_qpa.h | 7 ++----- src/gui/kernel/qguiapplication_qpa_p.h | 2 ++ 5 files changed, 39 insertions(+), 5 deletions(-) diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp index 8533b39..1316280 100644 --- a/src/gui/kernel/qapplication.cpp +++ b/src/gui/kernel/qapplication.cpp @@ -457,8 +457,10 @@ QGraphicsSystem *QApplicationPrivate::graphics_system = 0; // default graphics s QString QApplicationPrivate::graphics_system_name; // graphics system id - for delayed initialization bool QApplicationPrivate::runtime_graphics_system = false; +#ifndef Q_WS_QPA Q_GLOBAL_STATIC(QMutex, applicationFontMutex) QFont *QApplicationPrivate::app_font = 0; // default application font +#endif QFont *QApplicationPrivate::sys_font = 0; // default system font QFont *QApplicationPrivate::set_font = 0; // default font set by programmer @@ -1146,11 +1148,14 @@ QApplication::~QApplication() QApplicationPrivate::set_pal = 0; app_palettes()->clear(); +#ifndef Q_WS_QPA { QMutexLocker locker(applicationFontMutex()); delete QApplicationPrivate::app_font; QApplicationPrivate::app_font = 0; } +#endif + delete QApplicationPrivate::sys_font; QApplicationPrivate::sys_font = 0; delete QApplicationPrivate::set_font; @@ -1940,10 +1945,14 @@ void QApplicationPrivate::setSystemPalette(const QPalette &pal) */ QFont QApplication::font() { +#ifndef Q_WS_QPA QMutexLocker locker(applicationFontMutex()); if (!QApplicationPrivate::app_font) QApplicationPrivate::app_font = new QFont(QLatin1String("Helvetica")); return *QApplicationPrivate::app_font; +#else + return QGuiApplication::font(); +#endif } /*! @@ -2022,11 +2031,15 @@ void QApplication::setFont(const QFont &font, const char *className) bool all = false; FontHash *hash = app_fonts(); if (!className) { +#ifndef Q_WS_QPA QMutexLocker locker(applicationFontMutex()); if (!QApplicationPrivate::app_font) QApplicationPrivate::app_font = new QFont(font); else *QApplicationPrivate::app_font = font; +#else + QGuiApplication::setFont(font); +#endif if (hash && hash->size()) { all = true; hash->clear(); diff --git a/src/gui/kernel/qapplication_p.h b/src/gui/kernel/qapplication_p.h index 4127048..2b7ec31 100644 --- a/src/gui/kernel/qapplication_p.h +++ b/src/gui/kernel/qapplication_p.h @@ -432,7 +432,9 @@ public: static bool runtime_graphics_system; private: +#ifndef Q_WS_QPA static QFont *app_font; // private for a reason! Always use QApplication::font() instead! +#endif public: static QFont *sys_font; static QFont *set_font; diff --git a/src/gui/kernel/qguiapplication_qpa.cpp b/src/gui/kernel/qguiapplication_qpa.cpp index 67ad5a7..df03c44 100644 --- a/src/gui/kernel/qguiapplication_qpa.cpp +++ b/src/gui/kernel/qguiapplication_qpa.cpp @@ -47,6 +47,7 @@ #include #include +#include #include #include @@ -92,6 +93,9 @@ QGuiApplicationPrivate *QGuiApplicationPrivate::self = 0; QClipboard *QGuiApplicationPrivate::qt_clipboard = 0; #endif +Q_GLOBAL_STATIC(QMutex, applicationFontMutex) +QFont *QGuiApplicationPrivate::app_font = 0; + QGuiApplication::QGuiApplication(int &argc, char **argv, int flags) : QCoreApplication(*new QGuiApplicationPrivate(argc, argv, flags)) { @@ -738,5 +742,21 @@ QClipboard * QGuiApplication::clipboard() } #endif +QFont QGuiApplication::font() +{ + QMutexLocker locker(applicationFontMutex()); + if (!QGuiApplicationPrivate::app_font) + QGuiApplicationPrivate::app_font = new QFont(QLatin1String("Helvetica")); + return *QGuiApplicationPrivate::app_font; +} + +void QGuiApplication::setFont(const QFont &font) +{ + QMutexLocker locker(applicationFontMutex()); + if (!QGuiApplicationPrivate::app_font) + QGuiApplicationPrivate::app_font = new QFont(font); + else + *QGuiApplicationPrivate::app_font = font; +} QT_END_NAMESPACE diff --git a/src/gui/kernel/qguiapplication_qpa.h b/src/gui/kernel/qguiapplication_qpa.h index 4be4e19..7075107 100644 --- a/src/gui/kernel/qguiapplication_qpa.h +++ b/src/gui/kernel/qguiapplication_qpa.h @@ -73,13 +73,10 @@ public: static void changeOverrideCursor(const QCursor &); static void restoreOverrideCursor(); #endif +#endif static QFont font(); - static QFont font(const QWidget*); - static QFont font(const char *className); - static void setFont(const QFont &, const char* className = 0); - static QFontMetrics fontMetrics(); -#endif + static void setFont(const QFont &); #ifndef QT_NO_CLIPBOARD static QClipboard *clipboard(); diff --git a/src/gui/kernel/qguiapplication_qpa_p.h b/src/gui/kernel/qguiapplication_qpa_p.h index b3ecd01..d1ea998 100644 --- a/src/gui/kernel/qguiapplication_qpa_p.h +++ b/src/gui/kernel/qguiapplication_qpa_p.h @@ -117,6 +117,8 @@ public: #ifndef QT_NO_CLIPBOARD static QClipboard *qt_clipboard; #endif + + static QFont *app_font; private: void init(); -- 2.7.4