Bind translucent theme to background contrast rather than blur effect
Only the background contrast effect provides real contrast for contents, the blur effect doesn't improve readability that much; so we now use the translucent theme only when we have the background contrast effect. This significantly improves readability. CHANGELOG: An opaque theme is now used when only the blur effect is available REVIEW: 124039 BUG: 342934 BUG: 348154
This commit is contained in:
parent
afd962a15b
commit
d65c0ed1d0
@ -39,7 +39,7 @@ const char ThemePrivate::themeRcFile[] = "plasmarc";
|
|||||||
// these svgs do not follow the theme's colors, but rather the system colors
|
// these svgs do not follow the theme's colors, but rather the system colors
|
||||||
const char ThemePrivate::systemColorsTheme[] = "internal-system-colors";
|
const char ThemePrivate::systemColorsTheme[] = "internal-system-colors";
|
||||||
#if HAVE_X11
|
#if HAVE_X11
|
||||||
EffectWatcher *ThemePrivate::s_blurEffectWatcher = 0;
|
EffectWatcher *ThemePrivate::s_backgroundContrastEffectWatcher = Q_NULLPTR;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ThemePrivate *ThemePrivate::globalTheme = 0;
|
ThemePrivate *ThemePrivate::globalTheme = 0;
|
||||||
@ -61,7 +61,7 @@ ThemePrivate::ThemePrivate(QObject *parent)
|
|||||||
cachesToDiscard(NoCache),
|
cachesToDiscard(NoCache),
|
||||||
locolor(false),
|
locolor(false),
|
||||||
compositingActive(KWindowSystem::self()->compositingActive()),
|
compositingActive(KWindowSystem::self()->compositingActive()),
|
||||||
blurActive(KWindowEffects::isEffectAvailable(KWindowEffects::BlurBehind)),
|
backgroundContrastActive(KWindowEffects::isEffectAvailable(KWindowEffects::BackgroundContrast)),
|
||||||
isDefault(true),
|
isDefault(true),
|
||||||
useGlobal(true),
|
useGlobal(true),
|
||||||
hasWallpapers(false),
|
hasWallpapers(false),
|
||||||
@ -95,12 +95,17 @@ ThemePrivate::ThemePrivate(QObject *parent)
|
|||||||
|
|
||||||
if (QPixmap::defaultDepth() > 8) {
|
if (QPixmap::defaultDepth() > 8) {
|
||||||
#if HAVE_X11
|
#if HAVE_X11
|
||||||
//watch for blur effect property changes as well
|
//watch for background contrast effect property changes as well
|
||||||
if (!s_blurEffectWatcher) {
|
if (!s_backgroundContrastEffectWatcher) {
|
||||||
s_blurEffectWatcher = new EffectWatcher("_KDE_NET_WM_BLUR_BEHIND_REGION");
|
s_backgroundContrastEffectWatcher = new EffectWatcher("_KDE_NET_WM_BACKGROUND_CONTRAST_REGION");
|
||||||
}
|
}
|
||||||
|
|
||||||
QObject::connect(s_blurEffectWatcher, SIGNAL(effectChanged(bool)), this, SLOT(blurBehindChanged(bool)));
|
QObject::connect(s_backgroundContrastEffectWatcher, &EffectWatcher::effectChanged, this, [this](bool active) {
|
||||||
|
if (backgroundContrastActive != active) {
|
||||||
|
backgroundContrastActive = active;
|
||||||
|
scheduleThemeChangeNotification(PixmapCache | SvgElementsCache);
|
||||||
|
}
|
||||||
|
});
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
QCoreApplication::instance()->installEventFilter(this);
|
QCoreApplication::instance()->installEventFilter(this);
|
||||||
@ -278,7 +283,7 @@ QString ThemePrivate::findInTheme(const QString &image, const QString &theme, bo
|
|||||||
type = QStringLiteral("/locolor/");
|
type = QStringLiteral("/locolor/");
|
||||||
} else if (!compositingActive) {
|
} else if (!compositingActive) {
|
||||||
type = QStringLiteral("/opaque/");
|
type = QStringLiteral("/opaque/");
|
||||||
} else if (blurActive) {
|
} else if (backgroundContrastActive) {
|
||||||
type = QStringLiteral("/translucent/");
|
type = QStringLiteral("/translucent/");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -360,14 +365,6 @@ void ThemePrivate::colorsChanged()
|
|||||||
scheduleThemeChangeNotification(PixmapCache);
|
scheduleThemeChangeNotification(PixmapCache);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ThemePrivate::blurBehindChanged(bool blur)
|
|
||||||
{
|
|
||||||
if (blurActive != blur) {
|
|
||||||
blurActive = blur;
|
|
||||||
scheduleThemeChangeNotification(PixmapCache | SvgElementsCache);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ThemePrivate::scheduleThemeChangeNotification(CacheTypes caches)
|
void ThemePrivate::scheduleThemeChangeNotification(CacheTypes caches)
|
||||||
{
|
{
|
||||||
cachesToDiscard |= caches;
|
cachesToDiscard |= caches;
|
||||||
|
@ -84,7 +84,6 @@ public:
|
|||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
void compositingChanged(bool active);
|
void compositingChanged(bool active);
|
||||||
void colorsChanged();
|
void colorsChanged();
|
||||||
void blurBehindChanged(bool blur);
|
|
||||||
void settingsFileChanged(const QString &settings);
|
void settingsFileChanged(const QString &settings);
|
||||||
void scheduledCacheUpdate();
|
void scheduledCacheUpdate();
|
||||||
void onAppExitCleanup();
|
void onAppExitCleanup();
|
||||||
@ -102,7 +101,7 @@ public:
|
|||||||
static const char systemColorsTheme[];
|
static const char systemColorsTheme[];
|
||||||
static const char themeRcFile[];
|
static const char themeRcFile[];
|
||||||
#if HAVE_X11
|
#if HAVE_X11
|
||||||
static EffectWatcher *s_blurEffectWatcher;
|
static EffectWatcher *s_backgroundContrastEffectWatcher;
|
||||||
#endif
|
#endif
|
||||||
//Ref counting of ThemePrivate instances
|
//Ref counting of ThemePrivate instances
|
||||||
static ThemePrivate *globalTheme;
|
static ThemePrivate *globalTheme;
|
||||||
@ -142,7 +141,7 @@ public:
|
|||||||
|
|
||||||
bool locolor : 1;
|
bool locolor : 1;
|
||||||
bool compositingActive : 1;
|
bool compositingActive : 1;
|
||||||
bool blurActive : 1;
|
bool backgroundContrastActive : 1;
|
||||||
bool isDefault : 1;
|
bool isDefault : 1;
|
||||||
bool useGlobal : 1;
|
bool useGlobal : 1;
|
||||||
bool hasWallpapers : 1;
|
bool hasWallpapers : 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user