SVN commit 705482 by mwoehlke: As Casper boemann pointed out, we need to allow Active and Inactive color states (see QPalette::ColorGroup) to be different in KDE4. This means that KColorScheme needs to consider the color state. To that end, the previous constructor is deprecated in preference of a new one that takes a QPalette::ColorGroup. (QPalette is currently missing Inactive+Disabled, but until Qt adds it there isn't a lot of point in us trying to support it. By using QPalette's enum, we can track Qt changes more easily, and we also make the API simpler to use.) Currently the parameter is ignored; the KCS guts need some refactoring to be able to use it effectively for what I have in mind. Probably coming soon: convenience overloads that get the current color group from a QPalette or QWidget (shout if you know you want one or both... use cases please!). CCMAIL: kde-core-devel@kde.org CCMAIL: kde-devel@kde.org M +37 -7 kcolorscheme.cpp M +15 -1 kcolorscheme.h --- trunk/KDE/kdelibs/kdeui/colors/kcolorscheme.cpp #705481:705482 @@ -74,7 +74,7 @@ class KColorSchemePrivate : public QSharedData { public: - explicit KColorSchemePrivate(const KSharedConfigPtr&, const char*, DefaultColors); + explicit KColorSchemePrivate(const KSharedConfigPtr&, QPalette::ColorGroup, const char*, DefaultColors); QColor background(KColorScheme::BackgroundRole) const; QColor foreground(KColorScheme::ForegroundRole) const; @@ -86,10 +86,16 @@ qreal _contrast; }; -KColorSchemePrivate::KColorSchemePrivate(const KSharedConfigPtr &config, const char *group, DefaultColors defaults) +KColorSchemePrivate::KColorSchemePrivate(const KSharedConfigPtr &config, + QPalette::ColorGroup state, + const char *group, + DefaultColors defaults) : _config( config, group ), _defaults( defaults ) { _contrast = KGlobalSettings::contrastF( config ); + + // TODO do something with state, means we need to cache the config values + // up-front so we can fiddle with them } #define DEFAULT(a) QColor( _defaults.a[0], _defaults.a[1], _defaults.a[2] ) @@ -176,27 +182,51 @@ KColorScheme::KColorScheme(ColorSet set, KSharedConfigPtr config) { + // bleh, copied code, a good reason for this ctor to go away if (!config) { config = KGlobal::config(); } switch (set) { case Window: - d = new KColorSchemePrivate(config, "Colors:Window", defaultWindowColors); + d = new KColorSchemePrivate(config, QPalette::Active, "Colors:Window", defaultWindowColors); break; case Button: - d = new KColorSchemePrivate(config, "Colors:Button", defaultButtonColors); + d = new KColorSchemePrivate(config, QPalette::Active, "Colors:Button", defaultButtonColors); break; case Selection: - d = new KColorSchemePrivate(config, "Colors:Selection", defaultSelectionColors); + d = new KColorSchemePrivate(config, QPalette::Active, "Colors:Selection", defaultSelectionColors); break; case Tooltip: - d = new KColorSchemePrivate(config, "Colors:Tooltip", defaultTooltipColors); + d = new KColorSchemePrivate(config, QPalette::Active, "Colors:Tooltip", defaultTooltipColors); break; default: - d = new KColorSchemePrivate(config, "Colors:View", defaultViewColors); + d = new KColorSchemePrivate(config, QPalette::Active, "Colors:View", defaultViewColors); } } +KColorScheme::KColorScheme(QPalette::ColorGroup state, ColorSet set, KSharedConfigPtr config) +{ + if (!config) { + config = KGlobal::config(); + } + switch (set) { + case Window: + d = new KColorSchemePrivate(config, state, "Colors:Window", defaultWindowColors); + break; + case Button: + d = new KColorSchemePrivate(config, state, "Colors:Button", defaultButtonColors); + break; + case Selection: + d = new KColorSchemePrivate(config, state, "Colors:Selection", defaultSelectionColors); + break; + case Tooltip: + d = new KColorSchemePrivate(config, state, "Colors:Tooltip", defaultTooltipColors); + break; + default: + d = new KColorSchemePrivate(config, state, "Colors:View", defaultViewColors); + } +} + QBrush KColorScheme::background(BackgroundRole role) const { return QBrush( d->background( role ) ); --- trunk/KDE/kdelibs/kdeui/colors/kcolorscheme.h #705481:705482 @@ -25,6 +25,8 @@ #include +#include + class KConfigBase; class QColor; class QBrush; @@ -257,10 +259,22 @@ /** * Construct a palette from given color set, using the colors from the * given KConfig (if null, the system colors are used). + * + * @deprecated Use the other constructor that takes a state. + * In KDE4 it will not be safe to assume that the palette for different + * states (Active, Inactive, Disabled as of Qt 4.3) are identical. + * Therefore users really should specify a state. This constructor + * will most likely be removed before 4.0 final. */ - explicit KColorScheme(ColorSet = View, KSharedConfigPtr = KSharedConfigPtr()); + explicit KDE_CONSTRUCTOR_DEPRECATED KColorScheme(ColorSet = View, KSharedConfigPtr = KSharedConfigPtr()); /** + * Construct a palette from given color set and state, using the colors + * from the given KConfig (if null, the system colors are used). + */ + explicit KDE_CONSTRUCTOR_DEPRECATED KColorScheme(QPalette::ColorGroup, ColorSet = View, KSharedConfigPtr = KSharedConfigPtr()); + + /** * Retrieve the requested background brush. */ QBrush background(BackgroundRole = NormalBackground) const; >> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<