From f5e5071937f9e994c251998d348a252e3bc077e9 Mon Sep 17 00:00:00 2001
From: Rafostar <40623528+Rafostar@users.noreply.github.com>
Date: Sat, 21 Nov 2020 15:20:09 +0100
Subject: [PATCH] Support setting sliders brighter #13
When dark theme is used, sliders (especially progress on fullscreen) tend to look a little too dark (as if they were disabled). To overcome this, add an option to force them to be 20% brighter.
---
clapper_src/app.js | 6 +++
clapper_src/playerBase.js | 47 +++++++++++++++-----
clapper_src/prefs.js | 11 ++++-
css/styles.css | 3 ++
data/com.github.rafostar.Clapper.gschema.xml | 4 ++
5 files changed, 59 insertions(+), 12 deletions(-)
diff --git a/clapper_src/app.js b/clapper_src/app.js
index fceb5c73..2b2d3798 100644
--- a/clapper_src/app.js
+++ b/clapper_src/app.js
@@ -39,6 +39,12 @@ class ClapperApp extends Gtk.Application
if(!settings.get_boolean('render-shadows'))
window.add_css_class('gpufriendly');
+ if(
+ settings.get_boolean('dark-theme')
+ && settings.get_boolean('brighter-sliders')
+ )
+ window.add_css_class('brightscale');
+
for(let action in Menu.actions) {
let simpleAction = new Gio.SimpleAction({
name: action
diff --git a/clapper_src/playerBase.js b/clapper_src/playerBase.js
index 47b4830f..a0c4dc0f 100644
--- a/clapper_src/playerBase.js
+++ b/clapper_src/playerBase.js
@@ -178,7 +178,7 @@ class ClapperPlayerBase extends GstPlayer.Player
_onSettingsKeyChanged(settings, key)
{
- let value;
+ let root, value, action;
switch(key) {
case 'seeking-mode':
@@ -210,18 +210,20 @@ class ClapperPlayerBase extends GstPlayer.Player
}
break;
case 'render-shadows':
- let root = this.widget.get_root();
- if(root && root.isClapperApp) {
- let cssClass = 'gpufriendly';
- let renderShadows = settings.get_boolean('render-shadows');
- let hasShadows = !root.has_css_class(cssClass);
+ root = this.widget.get_root();
+ /* Editing theme of someone else app is taboo */
+ if(!root || !root.isClapperApp)
+ break;
- if(renderShadows === hasShadows)
- break;
+ let gpuClass = 'gpufriendly';
+ let renderShadows = settings.get_boolean(key);
+ let hasShadows = !root.has_css_class(gpuClass);
- let action = (renderShadows) ? 'remove' : 'add';
- root[action + '_css_class'](cssClass);
- }
+ if(renderShadows === hasShadows)
+ break;
+
+ action = (renderShadows) ? 'remove' : 'add';
+ root[action + '_css_class'](gpuClass);
break;
case 'audio-offset':
value = Math.round(settings.get_double(key) * -1000000);
@@ -233,6 +235,29 @@ class ClapperPlayerBase extends GstPlayer.Player
this.set_subtitle_video_offset(value);
debug(`set subtitle-video offset: ${value}`);
break;
+ case 'dark-theme':
+ case 'brighter-sliders':
+ root = this.widget.get_root();
+ if(!root || !root.isClapperApp)
+ break;
+
+ let brightClass = 'brightscale';
+ let isBrighter = root.has_css_class(brightClass);
+
+ if(key === 'dark-theme' && isBrighter && !settings.get_boolean(key)) {
+ root.remove_css_class(brightClass);
+ debug('remove brighter sliders');
+ break;
+ }
+
+ let setBrighter = settings.get_boolean('brighter-sliders');
+ if(setBrighter === isBrighter)
+ break;
+
+ action = (setBrighter) ? 'add' : 'remove';
+ root[action + '_css_class'](brightClass);
+ debug(`${action} brighter sliders`);
+ break;
default:
break;
}
diff --git a/clapper_src/prefs.js b/clapper_src/prefs.js
index 84ee475a..f43572be 100644
--- a/clapper_src/prefs.js
+++ b/clapper_src/prefs.js
@@ -24,7 +24,10 @@ class ClapperGeneralPage extends PrefsBase.Grid
comboBox.connect('changed', this._onVolumeInitialChanged.bind(this, spinButton));
this.addTitle('Appearance');
- this.addCheckButton('Enable dark theme', 'dark-theme');
+ let darkCheck = this.addCheckButton('Enable dark theme', 'dark-theme');
+ let brighterCheck = this.addCheckButton('Make sliders brighter', 'brighter-sliders');
+ this._onDarkThemeToggled(brighterCheck, darkCheck);
+ darkCheck.connect('toggled', this._onDarkThemeToggled.bind(this, brighterCheck));
}
_onVolumeInitialChanged(spinButton, comboBox)
@@ -32,6 +35,12 @@ class ClapperGeneralPage extends PrefsBase.Grid
let value = comboBox.get_active_id();
spinButton.set_visible(value === 'custom');
}
+
+ _onDarkThemeToggled(brighterCheck, darkCheck)
+ {
+ let isActive = darkCheck.get_active();
+ brighterCheck.set_visible(isActive);
+ }
});
var BehaviourPage = GObject.registerClass(
diff --git a/css/styles.css b/css/styles.css
index 3b9917fb..1e890513 100644
--- a/css/styles.css
+++ b/css/styles.css
@@ -156,3 +156,6 @@ scale marks {
.gpufriendlyfs {
box-shadow: none;
}
+.brightscale trough highlight {
+ filter: brightness(120%);
+}
diff --git a/data/com.github.rafostar.Clapper.gschema.xml b/data/com.github.rafostar.Clapper.gschema.xml
index 74b449ab..2673830b 100644
--- a/data/com.github.rafostar.Clapper.gschema.xml
+++ b/data/com.github.rafostar.Clapper.gschema.xml
@@ -18,6 +18,10 @@
false
Enable to force the app to use dark theme variant
+
+ true
+ Enable to make all sliders/bars brighter
+