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 <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2022-11-22 05:18:50 +02:00
parent 35151a7d91
commit 9ed7286504

View file

@ -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();