send signal to breeze to trigger reparsing the color scheme
AbandonedPublic

Authored by sebas on Jun 7 2019, 11:59 AM.

Details

Reviewers
None
Group Reviewers
Plasma
Summary

Without this patch, changing the application color scheme from system
settings only affects some widgets. Notably, checkboxes highlighting
colors stays the old color, leading to a hodge-podge color scheme and
bad contrast on some items.

The breeze QStyle caches the colors read via KSharedConfig, so it needs
to re-read the configuration when the application color changes. Breeze
has a dbus listener on the signal we emit in this patch and will act
accordingly. Currently, no one sends this signal.

Another way to achieve this is to installl an eventfilter on qApp in the
breeze style, see https://phabricator.kde.org/D21646

This fixes the coloring of various widgets in breeze right after color
changes.

Patch will probably need manual forward-porting to master since the KCM
has been rewritten using QtQuick. I can do that, but someone would need
to test.

BUG:408416
FIXED-IN: 5.15.6

Those I haven't tested, but look quite suspicious (so please re-test):
CCBUG:382505
CCBUG:355295

Test Plan

open kcmshell5 colors
change to a theme with a different highlight color
apply
without patch: checkbox in color KCM (and a whole lot of other widgets all over the place) don't change colors
with patch: colors change as expected

Diff Detail

Repository
R119 Plasma Desktop
Branch
colorchange-stable
Lint
No Linters Available
Unit
No Unit Test Coverage
Build Status
Buildable 12522
Build 12540: arc lint + arc unit
sebas created this revision.Jun 7 2019, 11:59 AM
Restricted Application added a project: Plasma. · View Herald TranscriptJun 7 2019, 11:59 AM
Restricted Application added a subscriber: plasma-devel. · View Herald Transcript
sebas requested review of this revision.Jun 7 2019, 11:59 AM

-1 on having the KCM do something style-specific. Ideally Breeze listened to some signals which your other patch does.

sebas abandoned this revision.Jun 7 2019, 12:08 PM

I agree. I initially preferred this approach since the other one involves installing a very global event filter. Since you proposed a cleaner solution there, let's go with that. I'll abandon this one.