diff options
| author | Nippy <nippy@Nippy-Mac-mini.local> | 2026-10-09 17:23:53 +0200 |
|---|---|---|
| committer | Nippy <nippy@Nippy-Mac-mini.local> | 2026-10-09 17:23:53 +0200 |
| commit | 9d5be1660d8f74038ebed3d74fdbc809e43787ae (patch) | |
| tree | 4cb46c3765be87ca4c5219f2f714425d7dfddb56 /raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/dummy_pipeline.js | |
| parent | deb4b8a9c407832c35100a643bd7a592589c9679 (diff) | |
| download | RaveOS-PKGBUILD-9d5be1660d8f74038ebed3d74fdbc809e43787ae.tar.gz RaveOS-PKGBUILD-9d5be1660d8f74038ebed3d74fdbc809e43787ae.zip | |
gnome fix
Diffstat (limited to 'raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/dummy_pipeline.js')
| -rw-r--r-- | raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/dummy_pipeline.js | 49 |
1 files changed, 37 insertions, 12 deletions
diff --git a/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/dummy_pipeline.js b/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/dummy_pipeline.js index 02b2d13..4d71d46 100644 --- a/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/dummy_pipeline.js +++ b/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/dummy_pipeline.js @@ -4,9 +4,12 @@ import Clutter from 'gi://Clutter'; /// A dummy `Pipeline`, for dynamic blur only. /// Instead of a pipeline id, we take the settings of the component we want to blur. export const DummyPipeline = class DummyPipeline { - constructor(effects_manager, settings, actor = null) { + constructor(effects_manager, settings, actor = null, options = {}) { this.effects_manager = effects_manager; this.settings = settings; + this.corner_radius_key = options.corner_radius_key ?? 'corner-radius'; + this.corner_radius_getter = options.corner_radius_getter ?? (() => this.settings.CORNER_RADIUS); + this.opacity_factor = 1; this.effect = null; this.attach_effect_to_actor(actor); } @@ -41,9 +44,9 @@ export const DummyPipeline = class DummyPipeline { // build the new effect to be added this.build_effect({ - unscaled_radius: 2 * this.settings.SIGMA, - brightness: this.settings.BRIGHTNESS, - corner_radius: this.settings.CORNER_RADIUS, + unscaled_radius: this.get_unscaled_radius(), + brightness: this.get_brightness(), + unscaled_corner_radius: this.corner_radius_getter(), }); this.actor_destroy_id = this.actor.connect( @@ -70,17 +73,40 @@ export const DummyPipeline = class DummyPipeline { this.effect = this.effects_manager.new_native_dynamic_gaussian_blur_effect(params); // connect to settings changes, using the true gsettings object - this._sigma_changed_id = this.settings.settings.connect( - 'changed::sigma', () => this.effect.unscaled_radius = 2 * this.settings.SIGMA - ); - this._brightness_changed_id = this.settings.settings.connect( - 'changed::brightness', () => this.effect.brightness = this.settings.BRIGHTNESS - ); + this._sigma_changed_id = this.settings.settings.connect('changed::sigma', () => this.update_effect()); + this._brightness_changed_id = this.settings.settings.connect('changed::brightness', () => this.update_effect()); this._corner_radius_changed_id = this.settings.settings.connect( - 'changed::corner-radius', () => this.effect.corner_radius = this.settings.CORNER_RADIUS + `changed::${this.corner_radius_key}`, + () => this.update_effect() ); } + set_opacity_factor(opacity_factor) { + opacity_factor = Math.max(0, Math.min(1, opacity_factor)); + if (this.opacity_factor === opacity_factor) + return; + + this.opacity_factor = opacity_factor; + this.update_effect(); + } + + update_effect() { + if (!this.effect) + return; + + this.effect.unscaled_radius = this.get_unscaled_radius(); + this.effect.brightness = this.get_brightness(); + this.effect.unscaled_corner_radius = this.corner_radius_getter(); + } + + get_unscaled_radius() { + return 2 * this.settings.SIGMA * this.opacity_factor; + } + + get_brightness() { + return 1 - (1 - this.settings.BRIGHTNESS) * this.opacity_factor; + } + repaint_effect() { this.effect?.queue_repaint(); } @@ -109,7 +135,6 @@ export const DummyPipeline = class DummyPipeline { /// Note: exposed to public API. destroy() { - this.remove_effect(); this.remove_pipeline_from_actor(); } |