From ffb7d6eaec092d8198dd7ed4cbc5ee292db9ccff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Hedin=20Br=C3=B8nner?= Date: Sat, 2 Mar 2019 18:27:09 +0100 Subject: [PATCH] Port to `class` in preperation for 3.32 see: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/361 TODO: port the LayoutManager in minimap.js, though it looks like gjs won't deprecrate Lang.Class yet, so it's probably fine to keep using it for now. --- liveAltTab.js | 55 +++++++++++++++++++++++-------------------------- navigator.js | 42 +++++++++++++++++-------------------- prefs.js | 1 - scratch.js | 1 - stackoverlay.js | 27 +++++++++++------------- tiling.js | 1 - 6 files changed, 57 insertions(+), 70 deletions(-) diff --git a/liveAltTab.js b/liveAltTab.js index 77c5e5e..109a922 100644 --- a/liveAltTab.js +++ b/liveAltTab.js @@ -1,6 +1,5 @@ var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org']; var Clutter = imports.gi.Clutter; -var Lang = imports.lang; var Meta = imports.gi.Meta; var AltTab = imports.ui.altTab; var Main = imports.ui.main; @@ -14,16 +13,14 @@ var debug = utils.debug; var prefs = Extension.imports.settings.prefs; -var LiveAltTab = Lang.Class({ - Name: 'LiveAltTab', - Extends: AltTab.WindowSwitcherPopup, +var LiveAltTab = class LiveAltTab extends AltTab.WindowSwitcherPopup { - _init(reverse) { + constructor(reverse) { this.reverse = reverse; - this.parent(); - }, + super(); + } - _getWindowList: function (reverse) { + _getWindowList(reverse) { let tabList = global.display.get_tab_list( Meta.TabList.NORMAL_ALL, global.workspace_manager.get_active_workspace()) @@ -37,9 +34,9 @@ var LiveAltTab = Lang.Class({ } else { return tabList.concat(this.reverse ? scratch.reverse() : scratch); } - }, + } - _initialSelection: function(backward, actionName) { + _initialSelection(backward, actionName) { this._block = Main.wm._blockAnimations; Main.wm._blockAnimations = true; this.space = Tiling.spaces.selectedSpace; @@ -65,10 +62,10 @@ var LiveAltTab = Lang.Class({ Main.uiGroup.insert_child_above(fog, global.window_group); this.fog = fog; - this.parent(backward, actionName); - }, + super._initialSelection(backward, actionName); + } - _keyPressHandler: function(keysym, mutterActionId) { + _keyPressHandler(keysym, mutterActionId) { if (keysym === Clutter.KEY_Escape) return Clutter.EVENT_PROPAGATE; // After the first super-tab the mutterActionId we get is apparently @@ -96,10 +93,10 @@ var LiveAltTab = Lang.Class({ // action.handler(metaWindow, space); // return true; // } - return this.parent(keysym, mutterActionId); - }, + return super._keyPressHandler(keysym, mutterActionId); + } - _select: function(num) { + _select(num) { let from = this._switcherList.windows[this._selectedIndex]; let to = this._switcherList.windows[num]; @@ -111,11 +108,11 @@ var LiveAltTab = Lang.Class({ let clone = new Clutter.Clone({source: actor}); clone.position = actor.position; - let space = Tiling.spaces.spaceOfWindow(to); + let space = Tiling.spaces.spaceOfWindow(to); if (space.indexOf(to) !== -1) { let x = Tiling.ensuredX(to, space) + space.monitor.x; - clone.x = x + space.monitor.x ; - clone.x -= frame.x - actor.x; + clone.x = x + space.monitor.x ; + clone.x -= frame.x - actor.x; } this.clone = clone; @@ -124,24 +121,24 @@ var LiveAltTab = Lang.Class({ // Tiling.ensureViewport(to, space); this._selectedIndex = num; this._switcherList.highlight(num); - }, + } - _finish: function() { - this.parent(); + _finish() { + super._finish(); this.was_accepted = true; - }, + } - _itemEnteredHandler: function() { + _itemEnteredHandler() { // The item-enter (mouse hover) event is triggered even after a item is // accepted. This can cause _select to run on the item below the pointer // ensuring the wrong window. if(!this.was_accepted) { - this.parent.apply(this, arguments); + super._itemEnteredHandler.apply(this, arguments); } - }, + } - _onDestroy: function() { - this.parent(); + _onDestroy() { + super._onDestroy(); debug('#preview', 'onDestroy', this.was_accepted); Main.wm._blockAnimations = this._block; if(!this.was_accepted) { @@ -162,7 +159,7 @@ var LiveAltTab = Lang.Class({ let to = this._switcherList.windows[this._selectedIndex]; Tiling.focus_handler(to); } -}) +} function liveAltTab(meta_window, space, {display, screen, binding}) { let tabPopup = new LiveAltTab(binding.is_reversed()); diff --git a/navigator.js b/navigator.js index 2acd326..5ca2a00 100644 --- a/navigator.js +++ b/navigator.js @@ -7,7 +7,6 @@ var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org']; var SwitcherPopup = imports.ui.switcherPopup; -var Lang = imports.lang; var Meta = imports.gi.Meta; var Main = imports.ui.main; var Mainloop = imports.mainloop; @@ -39,24 +38,21 @@ class SwitcherList { } Signals.addSignalMethods(SwitcherList.prototype); -var PreviewedWindowNavigator = new Lang.Class({ - Name: 'PreviewedWindowNavigator', - Extends: SwitcherPopup.SwitcherPopup, - - _init: function() { +var PreviewedWindowNavigator = class PreviewedWindowNavigator extends SwitcherPopup.SwitcherPopup { + constructor() { // Do the absolute minimal here, as `parent.show` is buggy and can // return early making cleanup hard. We do most initialization in // `_initialSelection` instead. // HACK: workaround to enable moving from empty workspace. See check in // SwitcherPopup.show - this.parent([1]); + super([1]); this._switcherList = new SwitcherList(); debug('#preview', 'init', this._switcherList); - }, + } - _initialSelection: function(backward, actionName) { + _initialSelection(backward, actionName) { debug('#preview', '_initialSelection'); this.navigator = getNavigator(); let actionId = Keybindings.idOf(actionName); @@ -71,9 +67,9 @@ var PreviewedWindowNavigator = new Lang.Class({ } this._doAction(actionId); - }, + } - _doAction: function(mutterActionId) { + _doAction(mutterActionId) { let action = Keybindings.byId(mutterActionId); if (action && action.options.activeInNavigator) { @@ -90,37 +86,37 @@ var PreviewedWindowNavigator = new Lang.Class({ } return false; - }, + } - _keyPressHandler: function(keysym, action) { + _keyPressHandler(keysym, action) { if (keysym !== Clutter.KEY_Escape && this._doAction(action)) { return Clutter.EVENT_STOP; } else { return Clutter.EVENT_PROPAGATE; } - }, + } - _finish: function(timestamp) { + _finish(timestamp) { debug('#preview', 'finish'); this.navigator.accept(); - this.parent(timestamp); - }, + super._finish(timestamp); + } - _itemEnteredHandler: function() { + _itemEnteredHandler() { // The item-enter (mouse hover) event is triggered even after a item is // accepted. This can cause _select to run on the item below the pointer // ensuring the wrong window. if(!this.was_accepted) { - this.parent.apply(this, arguments); + super._itemEnteredHandler.apply(this, arguments); } - }, + } - destroy: function() { + destroy() { this.actor.hide(); // Prevents finalized crap - this.parent(); + super.destroy(); this.navigator.destroy(); } -}); +}; var navigator; var Navigator = class Navigator { diff --git a/prefs.js b/prefs.js index 615c842..f53bfff 100644 --- a/prefs.js +++ b/prefs.js @@ -4,7 +4,6 @@ const GLib = imports.gi.GLib; const GObject = imports.gi.GObject; const Gtk = imports.gi.Gtk; const Gdk = imports.gi.Gdk; -const Lang = imports.lang; const Mainloop = imports.mainloop; const ExtensionUtils = imports.misc.extensionUtils; diff --git a/scratch.js b/scratch.js index 9936a18..98e3901 100644 --- a/scratch.js +++ b/scratch.js @@ -175,7 +175,6 @@ function hide() { } // Monkey patch the alt-space menu -var Lang = imports.lang; var PopupMenu = imports.ui.popupMenu; var WindowMenu = imports.ui.windowMenu; var originalBuildMenu = WindowMenu.WindowMenu.prototype._buildMenu; diff --git a/stackoverlay.js b/stackoverlay.js index 0bf4870..0034454 100644 --- a/stackoverlay.js +++ b/stackoverlay.js @@ -2,7 +2,6 @@ var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.o var Tiling = Extension.imports.tiling; var Clutter = imports.gi.Clutter; var Tweener = imports.ui.tweener; -var Lang = imports.lang; var Main = imports.ui.main; var Mainloop = imports.mainloop; var Shell = imports.gi.Shell; @@ -153,10 +152,8 @@ class ClickOverlay { } } -var StackOverlay = new Lang.Class({ - Name: 'Stackoverlay', - - _init: function(direction, monitor) { +var StackOverlay = class StackOverlay { + constructor(direction, monitor) { this._direction = direction; @@ -194,7 +191,7 @@ var StackOverlay = new Lang.Class({ Main.layoutManager.trackChrome(overlay); this.overlay = overlay; - }, + } triggerPreview() { if ("_previewId" in this) @@ -221,7 +218,7 @@ var StackOverlay = new Lang.Class({ x = monitor.x; clone.set_position(x, y); }); - }, + } removePreview() { if ("_previewId" in this) { @@ -237,9 +234,9 @@ var StackOverlay = new Lang.Class({ let space = Tiling.spaces.spaceOfWindow(this.target); // Show the WindowActors again and re-apply clipping space.moveDone(); - }, + } - removeBarrier: function() { + removeBarrier() { if (this.barrier) { if (this.pressureBarrier) this.pressureBarrier.removeBarrier(this.barrier); @@ -248,9 +245,9 @@ var StackOverlay = new Lang.Class({ this.barrier = null; } this._removeBarrierTimeoutId = 0; - }, + } - updateBarrier: function(force) { + updateBarrier(force) { if (force) this.removeBarrier(); @@ -289,9 +286,9 @@ var StackOverlay = new Lang.Class({ directions }); this.pressureBarrier.addBarrier(this.barrier); - }, + } - setTarget: function(space, index) { + setTarget(space, index) { if (this.clone) { this.clone.destroy(); @@ -360,5 +357,5 @@ var StackOverlay = new Lang.Class({ this.updateBarrier(); return true; - }, -}); + } +}; diff --git a/tiling.js b/tiling.js index ee62827..77ac2d5 100644 --- a/tiling.js +++ b/tiling.js @@ -1,7 +1,6 @@ var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org']; var GLib = imports.gi.GLib; var Tweener = imports.ui.tweener; -var Lang = imports.lang; var Meta = imports.gi.Meta; var Clutter = imports.gi.Clutter; var St = imports.gi.St;