restore hint-apply-color-scheme support

make hint-apply-color-scheme work (kiconeffect based coloring),
and make sure the kcolorschemes are reloaded when app palette changes
and the theme follows system colors

BUG:343389
Change-Id: I0a7a7eb0f89ed0948e618f1d608521f235aa1959
This commit is contained in:
Marco Martin 2015-01-28 14:45:37 +01:00
parent 993cdb54a6
commit bdda85a40d
3 changed files with 18 additions and 1 deletions

View File

@ -125,6 +125,7 @@ PRIVATE
KF5::XmlGui #KActionCollection KF5::XmlGui #KActionCollection
KF5::GlobalAccel #Applet::setGlobalShortcut KF5::GlobalAccel #Applet::setGlobalShortcut
KF5::Notifications KF5::Notifications
KF5::IconThemes
${PLASMA_EXTRA_LIBS} ${PLASMA_EXTRA_LIBS}
) )

View File

@ -346,6 +346,11 @@ void ThemePrivate::scheduledCacheUpdate()
void ThemePrivate::colorsChanged() void ThemePrivate::colorsChanged()
{ {
// in the case the theme follows the desktop settings, refetch the colorschemes
// and discard the svg pixmap cache
if (!colors) {
KSharedConfig::openConfig()->reparseConfiguration();
}
colorScheme = KColorScheme(QPalette::Active, KColorScheme::Window, colors); colorScheme = KColorScheme(QPalette::Active, KColorScheme::Window, colors);
buttonColorScheme = KColorScheme(QPalette::Active, KColorScheme::Button, colors); buttonColorScheme = KColorScheme(QPalette::Active, KColorScheme::Button, colors);
viewColorScheme = KColorScheme(QPalette::Active, KColorScheme::View, colors); viewColorScheme = KColorScheme(QPalette::Active, KColorScheme::View, colors);

View File

@ -35,6 +35,7 @@
#include <kconfiggroup.h> #include <kconfiggroup.h>
#include <QDebug> #include <QDebug>
#include <kfilterdev.h> #include <kfilterdev.h>
#include <kiconeffect.h>
#include "applet.h" #include "applet.h"
#include "package.h" #include "package.h"
@ -382,6 +383,13 @@ QPixmap SvgPrivate::findInCache(const QString &elementId, const QSizeF &s)
renderPainter.end(); renderPainter.end();
// Apply current color scheme if the svg asks for it
if (applyColors) {
QImage itmp = p.toImage();
KIconEffect::colorize(itmp, cacheAndColorsTheme()->color(Theme::BackgroundColor), 1.0);
p = p.fromImage(itmp);
}
if (cacheRendering) { if (cacheRendering) {
cacheAndColorsTheme()->insertIntoCache(id, p, QString::number((qint64)q, 16) % QLSEP % actualElementId); cacheAndColorsTheme()->insertIntoCache(id, p, QString::number((qint64)q, 16) % QLSEP % actualElementId);
} }
@ -550,7 +558,10 @@ QMatrix SvgPrivate::matrixForElement(const QString &elementId)
void SvgPrivate::checkColorHints() void SvgPrivate::checkColorHints()
{ {
if (elementRect("current-color-scheme").isValid()) { if (elementRect("hint-apply-color-scheme").isValid()) {
applyColors = true;
usesColors = true;
} else if (elementRect("current-color-scheme").isValid()) {
applyColors = false; applyColors = false;
usesColors = true; usesColors = true;
} else { } else {