From 9ed7286504817aa451f544bf7f388d0eaab1af34 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Tue, 22 Nov 2022 05:18:50 +0200 Subject: [PATCH] kcontrol: partial fix for KGlobalSettings race the style KCM for example emits changes via KGlobalSettings::self()->emitChange() however it does not wait for the KGlobalSettings::settingsChanged() signal (which means settings are reloaded) before running krdb, font and palette settings are likely subject to this race-condition but for now that will do Signed-off-by: Ivailo Monev --- kcontrol/krdb/krdb.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/kcontrol/krdb/krdb.cpp b/kcontrol/krdb/krdb.cpp index a3484cc2..721e7621 100644 --- a/kcontrol/krdb/krdb.cpp +++ b/kcontrol/krdb/krdb.cpp @@ -125,16 +125,21 @@ static void applyQtColors( QSettings& settings, QPalette& newPal ) // ----------------------------------------------------------------------------- -static void applyQtSettings( QSettings& settings ) +static void applyQtSettings( KSharedConfigPtr kglobalcfg, QSettings& settings ) { +#warning FIXME: KGlobalSettings race, settings may not be reloaded yet /* export font settings */ settings.setValue("Qt/font", KGlobalSettings::generalFont().toString()); /* export effects settings */ - bool effectsEnabled = (KGlobalSettings::graphicEffectsLevel() != KGlobalSettings::NoEffects); - bool fadeMenus = (KGlobalSettings::graphicEffectsLevel() & KGlobalSettings::ComplexAnimationEffects); - bool fadeTooltips = (KGlobalSettings::graphicEffectsLevel() & KGlobalSettings::ComplexAnimationEffects); - bool animateCombobox = (KGlobalSettings::graphicEffectsLevel() & KGlobalSettings::SimpleAnimationEffects); + KConfigGroup kglobalgrp( kglobalcfg, "KDE-Global GUI Settings" ); + int graphicEffects = kglobalgrp.readEntry("GraphicEffectsLevel", int(KGlobalSettings::graphicEffectsLevelDefault())); + KGlobalSettings::GraphicEffects graphicEffectsFlags = KGlobalSettings::GraphicEffects(graphicEffects); + bool effectsEnabled = (graphicEffectsFlags != KGlobalSettings::NoEffects); + bool fadeMenus = (graphicEffectsFlags & KGlobalSettings::ComplexAnimationEffects); + bool fadeTooltips = (graphicEffectsFlags & KGlobalSettings::ComplexAnimationEffects); + bool animateCombobox = (graphicEffectsFlags & KGlobalSettings::SimpleAnimationEffects); + // qDebug() << Q_FUNC_INFO << effectsEnabled << fadeMenus << fadeTooltips << animateCombobox; QStringList guieffects; if (effectsEnabled) { @@ -449,7 +454,7 @@ void runRdb( uint flags ) applyQtColors( settings, newPal ); // For kcmcolors if ( exportQtSettings ) - applyQtSettings( settings ); // For kcmstyle + applyQtSettings( kglobalcfg, settings ); // For kcmstyle } QApplication::flush(); -- 2.11.0