From 256f332c88594ad3f5d21b2ea87b22f3fbdb56a9 Mon Sep 17 00:00:00 2001 From: JosephMcc Date: Wed, 18 Feb 2026 07:18:22 -0800 Subject: [PATCH] lookingGlass.js: Port the inspector to GObject This allows us to get rid of another use CinnamonGenericContainer. No functional changes --- js/ui/lookingGlass.js | 57 +++++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/js/ui/lookingGlass.js b/js/ui/lookingGlass.js index a5faa22e27..963bc13f16 100644 --- a/js/ui/lookingGlass.js +++ b/js/ui/lookingGlass.js @@ -265,22 +265,31 @@ function addBorderPaintHook(actor) { return signalId; } -class Inspector { - constructor() { - let container = new Cinnamon.GenericContainer({ width: 0, - height: 0 }); - container.connect('allocate', (...args) => { this._allocate(...args) }); - Main.uiGroup.add_actor(container); - - let eventHandler = new St.BoxLayout({ name: 'LookingGlassDialog', - vertical: true, - reactive: true }); +var Inspector = GObject.registerClass({ + Signals: { + 'closed': {}, + 'target': { param_types: [Clutter.Actor.$gtype, GObject.TYPE_DOUBLE, GObject.TYPE_DOUBLE]}, + }, +}, class Inspector extends Clutter.Actor { + _init() { + super._init({ + width: 0, + height: 0, + }); + + Main.uiGroup.add_actor(this); + + let eventHandler = new St.BoxLayout({ + name: 'LookingGlassDialog', + vertical: true, + reactive: true, + }); this._eventHandler = eventHandler; Main.pushModal(this._eventHandler); - container.add_actor(eventHandler); - this._displayText = new St.Label({style: 'text-align: center;'}); + this.add_child(eventHandler); + this._displayText = new St.Label({ style: 'text-align: center;' }); eventHandler.add(this._displayText, { expand: true }); - this._passThroughText = new St.Label({style: 'text-align: center;'}); + this._passThroughText = new St.Label({ style: 'text-align: center;' }); eventHandler.add(this._passThroughText, { expand: true }); this._borderPaintTarget = null; @@ -312,11 +321,11 @@ class Inspector { event.get_key_symbol() === Clutter.KEY_Pause)) { this.passThroughEvents = !this.passThroughEvents; this._updatePassthroughText(); - return true; + return Clutter.EVENT_STOP; } if (this.passThroughEvents) - return false; + return Clutter.EVENT_PROPAGATE; switch (event.type()) { case Clutter.EventType.KEY_PRESS: @@ -328,14 +337,16 @@ class Inspector { case Clutter.EventType.MOTION: return this._onMotionEvent(actor, event); default: - return true; + return Clutter.EVENT_STOP; } } - _allocate(actor, box, flags) { + vfunc_allocate(box, flags) { if (!this._eventHandler) return; + this.set_allocation(box, flags); + let primary = Main.layoutManager.primaryMonitor; let [minWidth, minHeight, natWidth, natHeight] = @@ -366,7 +377,7 @@ class Inspector { _onKeyPressEvent(actor, event) { if (event.get_key_symbol() === Clutter.KEY_Escape) this._close(); - return true; + return Clutter.EVENT_STOP; } _onButtonPressEvent(actor, event) { @@ -375,7 +386,7 @@ class Inspector { this.emit('target', this._target, stageX, stageY); } this._close(); - return true; + return Clutter.EVENT_STOP; } _onScrollEvent(actor, event) { @@ -409,12 +420,12 @@ class Inspector { default: break; } - return true; + return Clutter.EVENT_STOP; } _onMotionEvent(actor, event) { this._update(event); - return true; + return Clutter.EVENT_STOP; } _update(event) { @@ -438,9 +449,7 @@ class Inspector { this._borderPaintId = addBorderPaintHook(this._target); } } -}; -Signals.addSignalMethods(Inspector.prototype); - +}); const melangeIFace = ' \