D10259: [Look and feel KCM] Fix copying color scheme data
Friedrich W. H. Kossebau
noreply at phabricator.kde.org
Thu Feb 8 18:46:53 UTC 2018
kossebau added a comment.
Okay, got my test user setup working again and thus finally can test how the code behaves in real life, next to the unit test.
Turns out that the "bug" is not opposed to the user by some magic things happening. In the normal usage the new setting is somehow synced before the color profile is loaded with the global settings mapped into (ex: activating the Oxygen LnF theme)
BEFORE cs "Breeze"
WRITING cs "Oxygen"
READING cs "Oxygen"
, while in the unit test this does not happen (as triggered e.g. by KcmTest::testKCMSave())
QDEBUG : KcmTest::testKCMSave() BEFORE cs "customTestValue"
QDEBUG : KcmTest::testKCMSave() WRITING cs "TestValue"
QDEBUG : KcmTest::testKCMSave() READING cs "customTestValue"
Debug output created by these lines added:
KConfigGroup configGroup(&m_config, "General");
qDebug() << "BEFORE cs" << configGroup.readEntry("ColorScheme"); // added
configGroup.writeEntry("ColorScheme", scheme);
qDebug() << "WRITING cs" << configGroup.readEntry("ColorScheme"); // added
KSharedConfigPtr conf = KSharedConfig::openConfig(colorFile);//, KSharedConfig::CascadeConfig);
{ // added
KConfigGroup cg(conf, "General"); // added
qDebug() << "READING cs" << cg.readEntry("ColorScheme"); // added
} // added
No explanation yet found for the different behaviour,
In any case, more important are these debug lines, which show off that without KSharedConfig::CascadeConfig and thus with the mapped global config settings, the color scheme loop copies not only the color scheme, but also all the global config (each line logging "group (keys)"):
COLORSCHEME "Colors:View" ("BackgroundAlternate", "BackgroundNormal", "DecorationFocus", "DecorationHover", "ForegroundActive", "ForegroundInactive", "ForegroundLink", "ForegroundNegative", "ForegroundNeutral", "ForegroundNormal", "ForegroundPositive", "ForegroundVisited")
COLORSCHEME "WM" ("activeBackground", "activeBlend", "activeFont", "activeForeground", "inactiveBackground", "inactiveBlend", "inactiveForeground")
COLORSCHEME "ColorEffects:Disabled" ("Color", "ColorAmount", "ColorEffect", "ContrastAmount", "ContrastEffect", "IntensityAmount", "IntensityEffect")
COLORSCHEME "Colors:Selection" ("BackgroundAlternate", "BackgroundNormal", "DecorationFocus", "DecorationHover", "ForegroundActive", "ForegroundInactive", "ForegroundLink", "ForegroundNegative", "ForegroundNeutral", "ForegroundNormal", "ForegroundPositive", "ForegroundVisited")
COLORSCHEME "ColorEffects:Inactive" ("ChangeSelectionColor", "Color", "ColorAmount", "ColorEffect", "ContrastAmount", "ContrastEffect", "Enable", "IntensityAmount", "IntensityEffect")
COLORSCHEME "PreviewSettings" ("MaximumRemoteSize", "camera", "file", "fonts")
COLORSCHEME "Colors:Button" ("BackgroundAlternate", "BackgroundNormal", "DecorationFocus", "DecorationHover", "ForegroundActive", "ForegroundInactive", "ForegroundLink", "ForegroundNegative", "ForegroundNeutral", "ForegroundNormal", "ForegroundPositive", "ForegroundVisited")
COLORSCHEME "KShortcutsDialog Settings" ("Dialog Size")
COLORSCHEME "KFileDialog Settings" ("Automatically select filename extension", "Breadcrumb Navigation", "Decoration position", "LocationCombo Completionmode", "PathCombo Completionmode", "Preview Width", "Previews", "Show Bookmarks", "Show Full Path", "Show Preview", "Show Speedbar", "Show hidden files", "Sort by", "Sort directories first", "Sort reversed", "Speedbar Width", "View Style", "detailedViewIconSize", "listViewIconSize")
COLORSCHEME "Appmenu Style" ("Style")
COLORSCHEME "DialogIcons" ("ActiveColor", "ActiveColor2", "ActiveEffect", "ActiveSemiTransparent", "ActiveValue", "Animated", "DefaultColor", "DefaultColor2", "DefaultEffect", "DefaultSemiTransparent", "DefaultValue", "DisabledColor", "DisabledColor2", "DisabledEffect", "DisabledSemiTransparent", "DisabledValue", "Size")
COLORSCHEME "MainToolbarIcons" ("ActiveColor", "ActiveColor2", "ActiveEffect", "ActiveSemiTransparent", "ActiveValue", "Animated", "DefaultColor", "DefaultColor2", "DefaultEffect", "DefaultSemiTransparent", "DefaultValue", "DisabledColor", "DisabledColor2", "DisabledEffect", "DisabledSemiTransparent", "DisabledValue", "Size")
COLORSCHEME "KDE" ("ChangeCursor", "ColorScheme", "LookAndFeelPackage", "ShowIconsInMenuItems", "ShowIconsOnPushButtons", "contrast", "widgetStyle")
COLORSCHEME "Toolbar style" ("ToolButtonStyle", "ToolButtonStyleOtherToolbars")
COLORSCHEME "ToolbarIcons" ("ActiveColor", "ActiveColor2", "ActiveEffect", "ActiveSemiTransparent", "ActiveValue", "Animated", "DefaultColor", "DefaultColor2", "DefaultEffect", "DefaultSemiTransparent", "DefaultValue", "DisabledColor", "DisabledColor2", "DisabledEffect", "DisabledSemiTransparent", "DisabledValue", "Size")
COLORSCHEME "DesktopIcons" ("ActiveColor", "ActiveColor2", "ActiveEffect", "ActiveSemiTransparent", "ActiveValue", "Animated", "DefaultColor", "DefaultColor2", "DefaultEffect", "DefaultSemiTransparent", "DefaultValue", "DisabledColor", "DisabledColor2", "DisabledEffect", "DisabledSemiTransparent", "DisabledValue", "Size")
COLORSCHEME "DirSelect Dialog" ("DirSelectDialog Size", "History Items")
COLORSCHEME "SmallIcons" ("ActiveColor", "ActiveColor2", "ActiveEffect", "ActiveSemiTransparent", "ActiveValue", "Animated", "DefaultColor", "DefaultColor2", "DefaultEffect", "DefaultSemiTransparent", "DefaultValue", "DisabledColor", "DisabledColor2", "DisabledEffect", "DisabledSemiTransparent", "DisabledValue", "Size")
COLORSCHEME "KDE URL Restrictions" ("rule_1", "rule_count")
COLORSCHEME "Paths" ("Trash")
COLORSCHEME "Colors:Complementary" ("BackgroundAlternate", "BackgroundNormal", "DecorationFocus", "DecorationHover", "ForegroundActive", "ForegroundInactive", "ForegroundLink", "ForegroundNegative", "ForegroundNeutral", "ForegroundNormal", "ForegroundPositive", "ForegroundVisited")
COLORSCHEME "Directories" ("dir_pixmap")
COLORSCHEME "Icons" ("Theme")
COLORSCHEME "KisShortcutsDialog Settings" ("Dialog Size")
COLORSCHEME "PanelIcons" ("ActiveColor", "ActiveColor2", "ActiveEffect", "ActiveSemiTransparent", "ActiveValue", "Animated", "DefaultColor", "DefaultColor2", "DefaultEffect", "DefaultSemiTransparent", "DefaultValue", "DisabledColor", "DisabledColor2", "DisabledEffect", "DisabledSemiTransparent", "DisabledValue", "Size")
COLORSCHEME "Colors:Window" ("BackgroundAlternate", "BackgroundNormal", "DecorationFocus", "DecorationHover", "ForegroundActive", "ForegroundInactive", "ForegroundLink", "ForegroundNegative", "ForegroundNeutral", "ForegroundNormal", "ForegroundPositive", "ForegroundVisited")
COLORSCHEME "General" ("BrowserApplication", "ColorScheme", "Name", "dbfile", "desktopFont", "fixed", "font", "menuFont", "shadeSortColumn", "smallestReadableFont", "taskbarFont", "toolBarFont", "widgetStyle")
COLORSCHEME "Colors:Tooltip" ("BackgroundAlternate", "BackgroundNormal", "DecorationFocus", "DecorationHover", "ForegroundActive", "ForegroundInactive", "ForegroundLink", "ForegroundNegative", "ForegroundNeutral", "ForegroundNormal", "ForegroundPositive", "ForegroundVisited")
COLORSCHEME "Translations" ("LANGUAGE")
where with the setting KSharedConfig::CascadeConfig it is just the color scheme data, as desired;
COLORSCHEME "ColorEffects:Disabled" ("Color", "ColorAmount", "ColorEffect", "ContrastAmount", "ContrastEffect", "IntensityAmount", "IntensityEffect")
COLORSCHEME "Colors:Complementary" ("BackgroundAlternate", "BackgroundNormal", "DecorationFocus", "DecorationHover", "ForegroundActive", "ForegroundInactive", "ForegroundLink", "ForegroundNegative", "ForegroundNeutral", "ForegroundNormal", "ForegroundPositive", "ForegroundVisited")
COLORSCHEME "ColorEffects:Inactive" ("ChangeSelectionColor", "Color", "ColorAmount", "ColorEffect", "ContrastAmount", "ContrastEffect", "Enable", "IntensityAmount", "IntensityEffect")
COLORSCHEME "Colors:View" ("BackgroundAlternate", "BackgroundNormal", "DecorationFocus", "DecorationHover", "ForegroundActive", "ForegroundInactive", "ForegroundLink", "ForegroundNegative", "ForegroundNeutral", "ForegroundNormal", "ForegroundPositive", "ForegroundVisited")
COLORSCHEME "KDE" ("contrast")
COLORSCHEME "Colors:Window" ("BackgroundAlternate", "BackgroundNormal", "DecorationFocus", "DecorationHover", "ForegroundActive", "ForegroundInactive", "ForegroundLink", "ForegroundNegative", "ForegroundNeutral", "ForegroundNormal", "ForegroundPositive", "ForegroundVisited")
COLORSCHEME "WM" ("activeBackground", "activeBlend", "activeForeground", "inactiveBackground", "inactiveBlend", "inactiveForeground")
COLORSCHEME "Colors:Button" ("BackgroundAlternate", "BackgroundNormal", "DecorationFocus", "DecorationHover", "ForegroundActive", "ForegroundInactive", "ForegroundLink", "ForegroundNegative", "ForegroundNeutral", "ForegroundNormal", "ForegroundPositive", "ForegroundVisited")
COLORSCHEME "Colors:Tooltip" ("BackgroundAlternate", "BackgroundNormal", "DecorationFocus", "DecorationHover", "ForegroundActive", "ForegroundInactive", "ForegroundLink", "ForegroundNegative", "ForegroundNeutral", "ForegroundNormal", "ForegroundPositive", "ForegroundVisited")
COLORSCHEME "Colors:Selection" ("BackgroundAlternate", "BackgroundNormal", "DecorationFocus", "DecorationHover", "ForegroundActive", "ForegroundInactive", "ForegroundLink", "ForegroundNegative", "ForegroundNeutral", "ForegroundNormal", "ForegroundPositive", "ForegroundVisited")
COLORSCHEME "General" ("ColorScheme", "Name", "shadeSortColumn")
Debug output created by this line added:
foreach (const QString &grp, conf->groupList()) {
KConfigGroup cg(conf, grp);
qDebug() << "COLORSCHEME" << grp << cg.keyList(); // added
KConfigGroup cg2(&m_config, grp);
cg.copyTo(&cg2);
}
So even if by chance(?) not resulting in a bug for the user, still the old code does unneeded things. And triggers the fail of the unit test KcmTest::testKCMSave().
So IMHO this is a patch good to have in. And similarly also to be applied for other places which load color schemes in a KSharedConfig object.
REPOSITORY
R119 Plasma Desktop
REVISION DETAIL
https://phabricator.kde.org/D10259
To: kossebau, broulik, davidedmundson, mart
Cc: plasma-devel, ZrenBot, progwolff, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, mart
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20180208/0de8c367/attachment-0001.html>
More information about the Plasma-devel
mailing list