diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2020-01-13 01:01:03 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2020-01-13 10:13:01 +0100 |
commit | cccc9d0b95cd021ae93c70867771a57aaadd16ff (patch) | |
tree | 34948260f68ee30b3ee0f8656d9b518e1438b606 /src/widgets/kernel | |
parent | 0dc5562fa4f01140e98e55ceaa743b0f4fc276c7 (diff) | |
parent | 76c4c5d5581b2cd36a043234eb167dd55041301d (diff) |
Merge remote-tracking branch 'origin/5.15' into dev
Conflicts:
tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
Change-Id: I4d3041fa291a918c774ffa5eb5c8792a0966451d
Diffstat (limited to 'src/widgets/kernel')
-rw-r--r-- | src/widgets/kernel/qapplication.cpp | 55 | ||||
-rw-r--r-- | src/widgets/kernel/qapplication_p.h | 8 |
2 files changed, 28 insertions, 35 deletions
diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp index 9568e35639..4b1daab4cf 100644 --- a/src/widgets/kernel/qapplication.cpp +++ b/src/widgets/kernel/qapplication.cpp @@ -414,11 +414,9 @@ bool Q_WIDGETS_EXPORT qt_tab_all_widgets() } // ######## move to QApplicationPrivate -// Default application palettes and fonts (per widget type) -Q_GLOBAL_STATIC(PaletteHash, app_palettes) +// Default fonts (per widget type) Q_GLOBAL_STATIC(FontHash, app_fonts) -// Exported accessors for use outside of this file -PaletteHash *qt_app_palettes_hash() { return app_palettes(); } +// Exported accessor for use outside of this file FontHash *qt_app_fonts_hash() { return app_fonts(); } QWidgetList *QApplicationPrivate::popupWidgets = nullptr; // has keyboard input focus @@ -635,7 +633,7 @@ static void setPossiblePalette(const QPalette *palette, const char *className) { if (palette == nullptr) return; - QApplicationPrivate::setPalette_helper(*palette, className, false); + QApplicationPrivate::setPalette_helper(*palette, className); } void QApplicationPrivate::initializeWidgetPaletteHash() @@ -643,7 +641,8 @@ void QApplicationPrivate::initializeWidgetPaletteHash() QPlatformTheme *platformTheme = QGuiApplicationPrivate::platformTheme(); if (!platformTheme) return; - app_palettes()->clear(); + + widgetPalettes.clear(); setPossiblePalette(platformTheme->palette(QPlatformTheme::ToolButtonPalette), "QToolButton"); setPossiblePalette(platformTheme->palette(QPlatformTheme::ButtonPalette), "QAbstractButton"); @@ -802,7 +801,7 @@ QApplication::~QApplication() delete QApplicationPrivate::app_pal; QApplicationPrivate::app_pal = nullptr; clearSystemPalette(); - app_palettes()->clear(); + QApplicationPrivate::widgetPalettes.clear(); delete QApplicationPrivate::sys_font; QApplicationPrivate::sys_font = nullptr; @@ -1315,6 +1314,8 @@ void QApplication::setGlobalStrut(const QSize& strut) QApplicationPrivate::app_strut = strut; } +// Widget specific palettes +QApplicationPrivate::PaletteHash QApplicationPrivate::widgetPalettes; /*! \fn QPalette QApplication::palette(const QWidget* widget) @@ -1329,15 +1330,13 @@ void QApplication::setGlobalStrut(const QSize& strut) */ QPalette QApplication::palette(const QWidget* w) { - typedef PaletteHash::const_iterator PaletteHashConstIt; - - PaletteHash *hash = app_palettes(); - if (w && hash && hash->size()) { - PaletteHashConstIt it = hash->constFind(w->metaObject()->className()); - const PaletteHashConstIt cend = hash->constEnd(); + auto &widgetPalettes = QApplicationPrivate::widgetPalettes; + if (w && !widgetPalettes.isEmpty()) { + auto it = widgetPalettes.constFind(w->metaObject()->className()); + const auto cend = widgetPalettes.constEnd(); if (it != cend) return *it; - for (it = hash->constBegin(); it != cend; ++it) { + for (it = widgetPalettes.constBegin(); it != cend; ++it) { if (w->inherits(it.key())) return it.value(); } @@ -1354,17 +1353,17 @@ QPalette QApplication::palette(const QWidget* w) */ QPalette QApplication::palette(const char *className) { - PaletteHash *hash = app_palettes(); - if (className && hash && hash->size()) { - QHash<QByteArray, QPalette>::ConstIterator it = hash->constFind(className); - if (it != hash->constEnd()) + auto &widgetPalettes = QApplicationPrivate::widgetPalettes; + if (className && !widgetPalettes.isEmpty()) { + auto it = widgetPalettes.constFind(className); + if (it != widgetPalettes.constEnd()) return *it; } return QGuiApplication::palette(); } -void QApplicationPrivate::setPalette_helper(const QPalette &palette, const char* className, bool clearWidgetPaletteHash) +void QApplicationPrivate::setPalette_helper(const QPalette &palette, const char* className) { QPalette pal = palette; @@ -1372,25 +1371,19 @@ void QApplicationPrivate::setPalette_helper(const QPalette &palette, const char* QApplicationPrivate::app_style->polish(pal); // NB: non-const reference bool all = false; - PaletteHash *hash = app_palettes(); if (!className) { - if (QApplicationPrivate::app_pal && pal.isCopyOf(*QApplicationPrivate::app_pal)) + if (!QGuiApplicationPrivate::setPalette(pal)) return; - if (!QApplicationPrivate::app_pal) - QApplicationPrivate::app_pal = new QPalette(pal); - else - *QApplicationPrivate::app_pal = pal; if (!QApplicationPrivate::sys_pal || !palette.isCopyOf(*QApplicationPrivate::sys_pal)) QCoreApplication::setAttribute(Qt::AA_SetPalette); - if (hash && hash->size()) { + if (!widgetPalettes.isEmpty()) { all = true; - if (clearWidgetPaletteHash) - hash->clear(); + widgetPalettes.clear(); } - } else if (hash) { - hash->insert(className, pal); + } else { + widgetPalettes.insert(className, pal); } if (qApp) @@ -1422,7 +1415,7 @@ void QApplicationPrivate::setPalette_helper(const QPalette &palette, const char* void QApplication::setPalette(const QPalette &palette, const char* className) { - QApplicationPrivate::setPalette_helper(palette, className, /*clearWidgetPaletteHash=*/ true); + QApplicationPrivate::setPalette_helper(palette, className); } diff --git a/src/widgets/kernel/qapplication_p.h b/src/widgets/kernel/qapplication_p.h index 79d06ed98c..71f695cc18 100644 --- a/src/widgets/kernel/qapplication_p.h +++ b/src/widgets/kernel/qapplication_p.h @@ -94,9 +94,6 @@ extern QClipboard *qt_clipboard; typedef QHash<QByteArray, QFont> FontHash; Q_WIDGETS_EXPORT FontHash *qt_app_fonts_hash(); -typedef QHash<QByteArray, QPalette> PaletteHash; -PaletteHash *qt_app_palettes_hash(); - #define QApplicationPrivateBase QGuiApplicationPrivate class Q_WIDGETS_EXPORT QApplicationPrivate : public QApplicationPrivateBase @@ -188,11 +185,14 @@ public: static bool widgetCount; // Coupled with -widgetcount switch static void setSystemPalette(const QPalette &pal); - static void setPalette_helper(const QPalette &palette, const char* className, bool clearWidgetPaletteHash); + static void setPalette_helper(const QPalette &palette, const char* className); static void initializeWidgetPaletteHash(); static void initializeWidgetFontHash(); static void setSystemFont(const QFont &font); + using PaletteHash = QHash<QByteArray, QPalette>; + static PaletteHash widgetPalettes; + static QApplicationPrivate *instance() { return self; } #ifdef QT_KEYPAD_NAVIGATION |