summaryrefslogtreecommitdiff
path: root/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/paint_signals.js
diff options
context:
space:
mode:
authorAlexanderCurl <alexc@alexc.hu>2026-04-18 17:46:06 +0100
committerAlexanderCurl <alexc@alexc.hu>2026-04-18 17:46:06 +0100
commit70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 (patch)
treeab1123d4067c1b086dd6faa7ee4ea643236b565a /raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/paint_signals.js
parent5d94c0a7d44a2255b81815a52a7056a94a39842d (diff)
downloadRaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.tar.gz
RaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.zip
Replaced file structures for themes in the correct format
Diffstat (limited to 'raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/paint_signals.js')
-rw-r--r--raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/paint_signals.js91
1 files changed, 91 insertions, 0 deletions
diff --git a/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/paint_signals.js b/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/paint_signals.js
new file mode 100644
index 0000000..5fbfee4
--- /dev/null
+++ b/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/conveniences/paint_signals.js
@@ -0,0 +1,91 @@
+import GObject from 'gi://GObject';
+import Clutter from 'gi://Clutter';
+
+
+export const PaintSignals = class PaintSignals {
+ constructor(connections) {
+ this.buffer = [];
+ this.connections = connections;
+ }
+
+ connect(actor, blur_effect) {
+ let paint_effect = new EmitPaintSignal();
+ let infos = {
+ actor: actor,
+ paint_effect: paint_effect
+ };
+ let counter = 0;
+
+ actor.add_effect(paint_effect);
+ this.connections.connect(paint_effect, 'update-blur', () => {
+ try {
+ // checking if blur_effect.queue_repaint() has been recently called
+ if (counter === 0) {
+ counter = 2;
+ blur_effect.queue_repaint();
+ }
+ else counter--;
+ } catch (e) { }
+ });
+
+ // remove the actor from buffer when it is destroyed
+ if (
+ actor.connect &&
+ (
+ !(actor instanceof GObject.Object) ||
+ GObject.signal_lookup('destroy', actor)
+ )
+ )
+ this.connections.connect(actor, 'destroy', () => {
+ const immutable_buffer = [...this.buffer];
+ immutable_buffer.forEach(infos => {
+ if (infos.actor === actor) {
+ // remove from buffer
+ let index = this.buffer.indexOf(infos);
+ this.buffer.splice(index, 1);
+ }
+ });
+ });
+
+ this.buffer.push(infos);
+ }
+
+ disconnect_all_for_actor(actor) {
+ const immutable_buffer = [...this.buffer];
+ immutable_buffer.forEach(infos => {
+ if (infos.actor === actor) {
+ this.connections.disconnect_all_for(infos.paint_effect);
+ infos.actor.remove_effect(infos.paint_effect);
+
+ // remove from buffer
+ let index = this.buffer.indexOf(infos);
+ this.buffer.splice(index, 1);
+ }
+ });
+ }
+
+ disconnect_all() {
+ this.buffer.forEach(infos => {
+ this.connections.disconnect_all_for(infos.paint_effect);
+ infos.actor.remove_effect(infos.paint_effect);
+ });
+
+ this.buffer = [];
+ }
+};
+
+export const EmitPaintSignal = GObject.registerClass({
+ GTypeName: 'EmitPaintSignal',
+ Signals: {
+ 'update-blur': {
+ param_types: []
+ },
+ }
+},
+ class EmitPaintSignal extends Clutter.Effect {
+ vfunc_paint(node, paint_context, paint_flags) {
+ this.emit("update-blur");
+ super.vfunc_paint(node, paint_context, paint_flags);
+ }
+ }
+); \ No newline at end of file