Share updates to QGuiApplicationPrivate::app_pal via helper function

Change-Id: I2f582358efaadcd33b39c52317222322c589423f
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
This commit is contained in:
Tor Arne Vestbø 2019-12-20 17:45:58 +01:00
parent 445c1a873f
commit 0c37bc11b5
3 changed files with 17 additions and 10 deletions

View File

@ -3293,12 +3293,8 @@ QPalette QGuiApplication::palette()
*/ */
void QGuiApplication::setPalette(const QPalette &pal) void QGuiApplication::setPalette(const QPalette &pal)
{ {
if (QGuiApplicationPrivate::app_pal && pal.isCopyOf(*QGuiApplicationPrivate::app_pal)) if (!QGuiApplicationPrivate::setPalette(pal))
return; return;
if (!QGuiApplicationPrivate::app_pal)
QGuiApplicationPrivate::app_pal = new QPalette(pal);
else
*QGuiApplicationPrivate::app_pal = pal;
QCoreApplication::setAttribute(Qt::AA_SetPalette); QCoreApplication::setAttribute(Qt::AA_SetPalette);
@ -3306,6 +3302,19 @@ void QGuiApplication::setPalette(const QPalette &pal)
qGuiApp->d_func()->sendApplicationPaletteChange(); qGuiApp->d_func()->sendApplicationPaletteChange();
} }
bool QGuiApplicationPrivate::setPalette(const QPalette &palette)
{
if (app_pal && palette.isCopyOf(*app_pal))
return false;
if (!app_pal)
app_pal = new QPalette(palette);
else
*app_pal = palette;
return true;
}
void QGuiApplicationPrivate::applyWindowGeometrySpecificationTo(QWindow *window) void QGuiApplicationPrivate::applyWindowGeometrySpecificationTo(QWindow *window)
{ {
windowGeometrySpecification.applyTo(window); windowGeometrySpecification.applyTo(window);

View File

@ -323,6 +323,8 @@ public:
static void resetCachedDevicePixelRatio(); static void resetCachedDevicePixelRatio();
static bool setPalette(const QPalette &palette);
protected: protected:
virtual void notifyThemeChanged(); virtual void notifyThemeChanged();
virtual void sendApplicationPaletteChange(bool toAllWidgets = false, const char *className = nullptr); virtual void sendApplicationPaletteChange(bool toAllWidgets = false, const char *className = nullptr);

View File

@ -1374,12 +1374,8 @@ void QApplicationPrivate::setPalette_helper(const QPalette &palette, const char*
bool all = false; bool all = false;
PaletteHash *hash = app_palettes(); PaletteHash *hash = app_palettes();
if (!className) { if (!className) {
if (QApplicationPrivate::app_pal && pal.isCopyOf(*QApplicationPrivate::app_pal)) if (!QGuiApplicationPrivate::setPalette(pal))
return; 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)) if (!QApplicationPrivate::sys_pal || !palette.isCopyOf(*QApplicationPrivate::sys_pal))
QCoreApplication::setAttribute(Qt::AA_SetPalette); QCoreApplication::setAttribute(Qt::AA_SetPalette);