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 +