diff options
author | Jørgen Lind <jorgen.lind@nokia.com> | 2011-04-27 17:29:10 +0200 |
---|---|---|
committer | Samuel Rødal <samuel.rodal@nokia.com> | 2011-04-28 15:39:46 +0200 |
commit | 9f14dc661e7cdac5435cf1463b1a595ea519fea2 (patch) | |
tree | ec56acfbf4a9492c4cd15c0bc4fe6a11a22b46b8 | |
parent | 9b8759284bc7d447227c9e0aaf3caade49e9f5f7 (diff) |
Font
(cherry picked from commit 050925ccac957dea3d4e138babdd7aa93925dffc)
-rw-r--r-- | src/gui/kernel/qapplication.cpp | 13 | ||||
-rw-r--r-- | src/gui/kernel/qapplication_p.h | 2 | ||||
-rw-r--r-- | src/gui/kernel/qguiapplication_qpa.cpp | 20 | ||||
-rw-r--r-- | src/gui/kernel/qguiapplication_qpa.h | 7 | ||||
-rw-r--r-- | 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 8533b39398..13162800ac 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 4127048c91..2b7ec31b73 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 67ad5a7169..df03c44c73 100644 --- a/src/gui/kernel/qguiapplication_qpa.cpp +++ b/src/gui/kernel/qguiapplication_qpa.cpp @@ -47,6 +47,7 @@ #include <QtCore/private/qcoreapplication_p.h> #include <QtCore/private/qabstracteventdispatcher_p.h> +#include <QtCore/qmutex.h> #include <QtDebug> #include <QtGui/QPlatformIntegration> @@ -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 4be4e193ef..707510717c 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 b3ecd01703..d1ea998768 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(); |