diff --git a/src/kcolorscheme.cpp b/src/kcolorscheme.cpp --- a/src/kcolorscheme.cpp +++ b/src/kcolorscheme.cpp @@ -280,6 +280,8 @@ explicit KColorSchemePrivate(const KSharedConfigPtr &, QPalette::ColorGroup, const char *, const SetDefaultColors &, const QBrush &); ~KColorSchemePrivate() {} + void loadAccentIntoBackground(const KSharedConfigPtr &, const char *, const SetDefaultColors &); + QBrush background(KColorScheme::BackgroundRole) const; QBrush foreground(KColorScheme::ForegroundRole) const; QBrush decoration(KColorScheme::DecorationRole) const; @@ -338,25 +340,37 @@ init(config, state, group, defaults); } +void KColorSchemePrivate::loadAccentIntoBackground(const KSharedConfigPtr &config, + const char *group, + const SetDefaultColors &defaults) +{ + KConfigGroup cfg(config, group); + KConfigGroup accent(KSharedConfig::openConfig(), "Accent"); + + _brushes.bg[KColorScheme::NormalBackground] = accent.readEntry("Background", cfg.readEntry("BackgroundNormal", SET_DEFAULT(NormalBackground))); + _brushes.bg[KColorScheme::AlternateBackground] = accent.readEntry("Background", cfg.readEntry("BackgroundAlternate", SET_DEFAULT(AlternateBackground))); +} + void KColorSchemePrivate::init(const KSharedConfigPtr &config, QPalette::ColorGroup state, const char *group, const SetDefaultColors &defaults) { KConfigGroup cfg(config, group); + KConfigGroup accent(KSharedConfig::openConfig(), "Accent"); // loaded-from-config colors _brushes.fg[KColorScheme::NormalText] = cfg.readEntry("ForegroundNormal", SET_DEFAULT(NormalText)); _brushes.fg[KColorScheme::InactiveText] = cfg.readEntry("ForegroundInactive", SET_DEFAULT(InactiveText)); - _brushes.fg[KColorScheme::ActiveText] = cfg.readEntry("ForegroundActive", SET_DEFAULT(ActiveText)); - _brushes.fg[KColorScheme::LinkText] = cfg.readEntry("ForegroundLink", SET_DEFAULT(LinkText)); + _brushes.fg[KColorScheme::ActiveText] = accent.readEntry("Foreground", cfg.readEntry("ForegroundActive", SET_DEFAULT(ActiveText))); + _brushes.fg[KColorScheme::LinkText] = accent.readEntry("Foreground", cfg.readEntry("ForegroundLink", SET_DEFAULT(LinkText))); _brushes.fg[KColorScheme::VisitedText] = cfg.readEntry("ForegroundVisited", SET_DEFAULT(VisitedText)); _brushes.fg[KColorScheme::NegativeText] = cfg.readEntry("ForegroundNegative", SET_DEFAULT(NegativeText)); _brushes.fg[KColorScheme::NeutralText] = cfg.readEntry("ForegroundNeutral", SET_DEFAULT(NeutralText)); _brushes.fg[KColorScheme::PositiveText] = cfg.readEntry("ForegroundPositive", SET_DEFAULT(PositiveText)); - _brushes.deco[KColorScheme::FocusColor] = cfg.readEntry("DecorationFocus", DECO_DEFAULT(Focus)); - _brushes.deco[KColorScheme::HoverColor] = cfg.readEntry("DecorationHover", DECO_DEFAULT(Hover)); + _brushes.deco[KColorScheme::FocusColor] = accent.readEntry("Foreground", cfg.readEntry("DecorationFocus", DECO_DEFAULT(Focus))); + _brushes.deco[KColorScheme::HoverColor] = accent.readEntry("AccForegroundent", cfg.readEntry("DecorationHover", DECO_DEFAULT(Hover))); // apply state adjustments if (state != QPalette::Active) { @@ -461,11 +475,14 @@ // ...except tinted with the Selection:NormalBackground color so it looks more like selection if (state == QPalette::Active || (state == QPalette::Inactive && !inactiveSelectionEffect)) { d = new KColorSchemePrivate(config, state, "Colors:Selection", defaultSelectionColors); - } else if (state == QPalette::Inactive) + d.data()->loadAccentIntoBackground(config, "Colors:Selection", defaultSelectionColors); + } else if (state == QPalette::Inactive) { d = new KColorSchemePrivate(config, state, "Colors:Window", defaultWindowColors, KColorScheme(QPalette::Active, Selection, config).background()); - else { // disabled (...and still want this branch when inactive+disabled exists) + d.data()->loadAccentIntoBackground(config, "Colors:Window", defaultWindowColors); + } else { // disabled (...and still want this branch when inactive+disabled exists) d = new KColorSchemePrivate(config, state, "Colors:Window", defaultWindowColors); + d.data()->loadAccentIntoBackground(config, "Colors:Window", defaultWindowColors); } } break; case Tooltip: