From f949799c37325492c8226470a33dac421eaa82c0 Mon Sep 17 00:00:00 2001 From: Rasmus Eneman Date: Fri, 30 Aug 2019 08:16:23 +0200 Subject: [PATCH 1/3] Fix crash under Gnome 3.34 --- examples/keybindings.js | 2 +- extension.js | 2 +- gestures.js | 2 +- keybindings.js | 2 +- kludges.js | 2 +- liveAltTab.js | 2 +- minimap.js | 2 +- navigator.js | 2 +- scratch.js | 2 +- settings.js | 2 +- stackoverlay.js | 2 +- tiling.js | 2 +- topbar.js | 2 +- utils.js | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/examples/keybindings.js b/examples/keybindings.js index 6e5b0ae..dee207d 100644 --- a/examples/keybindings.js +++ b/examples/keybindings.js @@ -1,4 +1,4 @@ -var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org']; +var Extension = imports.misc.extensionUtils.getCurrentExtension(); var Keybindings = Extension.imports.keybindings; var Main = imports.ui.main; var Tiling = Extension.imports.tiling; diff --git a/extension.js b/extension.js index eae1c65..67e769c 100644 --- a/extension.js +++ b/extension.js @@ -85,7 +85,7 @@ function init() { // var Gio = imports.gi.Gio; // let extfile = Gio.file_new_for_path( Extension.imports.extension.__file__); - Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org']; + Extension = imports.misc.extensionUtils.getCurrentExtension(); convenience = Extension.imports.convenience; if(initRun) { diff --git a/gestures.js b/gestures.js index 5ef9aed..b28c6f6 100644 --- a/gestures.js +++ b/gestures.js @@ -1,4 +1,4 @@ -var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org']; +var Extension = imports.misc.extensionUtils.getCurrentExtension(); var Meta = imports.gi.Meta; var St = imports.gi.St; var Gio = imports.gi.Gio; diff --git a/keybindings.js b/keybindings.js index 0a9d6b7..0ad76d2 100644 --- a/keybindings.js +++ b/keybindings.js @@ -1,4 +1,4 @@ -var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org']; +var Extension = imports.misc.extensionUtils.getCurrentExtension(); var Me = Extension.imports.keybindings; var Gdk = imports.gi.Gdk; var Gtk = imports.gi.Gtk; diff --git a/kludges.js b/kludges.js index 7245f0d..9d34fb9 100644 --- a/kludges.js +++ b/kludges.js @@ -4,7 +4,7 @@ around these problems. */ -var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org']; +var Extension = imports.misc.extensionUtils.getCurrentExtension(); var Meta = imports.gi.Meta; var Main = imports.ui.main; diff --git a/liveAltTab.js b/liveAltTab.js index b4ac67b..722a4ff 100644 --- a/liveAltTab.js +++ b/liveAltTab.js @@ -1,4 +1,4 @@ -var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org']; +var Extension = imports.misc.extensionUtils.getCurrentExtension(); var Clutter = imports.gi.Clutter; var Meta = imports.gi.Meta; var AltTab = imports.ui.altTab; diff --git a/minimap.js b/minimap.js index d99f064..f920a01 100644 --- a/minimap.js +++ b/minimap.js @@ -1,4 +1,4 @@ -var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org'] +var Extension = imports.misc.extensionUtils.getCurrentExtension(); var Clutter = imports.gi.Clutter; var Tweener = imports.ui.tweener; var Main = imports.ui.main; diff --git a/navigator.js b/navigator.js index fee779d..3b52452 100644 --- a/navigator.js +++ b/navigator.js @@ -5,7 +5,7 @@ `SwitcherPopup.SwitcherPopup` when we really should just take full control. */ -var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org']; +var Extension = imports.misc.extensionUtils.getCurrentExtension(); var SwitcherPopup = imports.ui.switcherPopup; var Meta = imports.gi.Meta; var Main = imports.ui.main; diff --git a/scratch.js b/scratch.js index 3a96dd0..3b46709 100644 --- a/scratch.js +++ b/scratch.js @@ -1,4 +1,4 @@ -var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org']; +var Extension = imports.misc.extensionUtils.getCurrentExtension(); var Meta = imports.gi.Meta; var Main = imports.ui.main; diff --git a/settings.js b/settings.js index bf25404..fb4f49f 100644 --- a/settings.js +++ b/settings.js @@ -3,7 +3,7 @@ Settings utility shared between the running extension and the preference UI. */ -var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org']; +var Extension = imports.misc.extensionUtils.getCurrentExtension(); var Gio = imports.gi.Gio; var GLib = imports.gi.GLib; var Gtk = imports.gi.Gtk; diff --git a/stackoverlay.js b/stackoverlay.js index 3510ccc..3eaa9b0 100644 --- a/stackoverlay.js +++ b/stackoverlay.js @@ -1,4 +1,4 @@ -var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org']; +var Extension = imports.misc.extensionUtils.getCurrentExtension(); var Tiling = Extension.imports.tiling; var Clutter = imports.gi.Clutter; var Tweener = imports.ui.tweener; diff --git a/tiling.js b/tiling.js index af133ad..57f44b5 100644 --- a/tiling.js +++ b/tiling.js @@ -1,4 +1,4 @@ -var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org']; +var Extension = imports.misc.extensionUtils.getCurrentExtension(); var GLib = imports.gi.GLib; var Tweener = imports.ui.tweener; var Meta = imports.gi.Meta; diff --git a/topbar.js b/topbar.js index ed16a4c..f2e0324 100644 --- a/topbar.js +++ b/topbar.js @@ -2,7 +2,7 @@ Functionality related to the top bar, often called the statusbar. */ -var Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org']; +var Extension = imports.misc.extensionUtils.getCurrentExtension(); var Meta = imports.gi.Meta; var St = imports.gi.St; var Gio = imports.gi.Gio; diff --git a/utils.js b/utils.js index cd3717d..d982d9d 100644 --- a/utils.js +++ b/utils.js @@ -1,4 +1,4 @@ -const Extension = imports.misc.extensionUtils.extensions['paperwm@hedning:matrix.org'] +const Extension = imports.misc.extensionUtils.getCurrentExtension(); const Gdk = imports.gi.Gdk; var GLib = imports.gi.GLib; var Meta = imports.gi.Meta; From 97aff27a928f4b6c023a2e113cffee5baed973ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Hedin=20Br=C3=B8nner?= Date: Mon, 2 Sep 2019 00:52:48 +0200 Subject: [PATCH 2/3] 3.34: work around new object.actor rule For ClutterActors object.actor === object, which means our `clone.actor` naming needs to change. https://gitlab.gnome.org/GNOME/gnome-shell/blob/master/js/ui/environment.js#L232 --- tiling.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tiling.js b/tiling.js index 57f44b5..c61bfd9 100644 --- a/tiling.js +++ b/tiling.js @@ -1774,7 +1774,7 @@ function registerWindow(metaWindow) { clone.meta_window = metaWindow; metaWindow.clone = clone; - metaWindow.clone.actor = cloneActor; + metaWindow.clone.cloneActor = cloneActor; signals.connect(metaWindow, "focus", focus_wrapper); // Note: runs before gnome-shell's minimize handling code @@ -1792,7 +1792,7 @@ function allocateClone(actor) { // Adjust the clone's origin to the north-west, so it will line up // with the frame. let clone = metaWindow.clone; - let cloneActor = clone.actor; + let cloneActor = clone.cloneActor; cloneActor.set_position(actor.x - frame.x, actor.y - frame.y); clone.set_size(frame.width, frame.height); @@ -2179,7 +2179,7 @@ function ensureViewport(meta_window, space, force) { function updateSelection(space, metaWindow) { let clone = metaWindow.clone; - let cloneActor = clone.actor; + let cloneActor = clone.cloneActor; space.setSelectionActive(); if (space.selection.get_parent() === clone) return; @@ -2383,7 +2383,7 @@ function showWindow(metaWindow) { let actor = metaWindow.get_compositor_private(); if (!actor) return false; - metaWindow.clone.actor.hide(); + metaWindow.clone.cloneActor.hide(); actor.show(); return true; } @@ -2392,14 +2392,14 @@ function animateWindow(metaWindow) { let actor = metaWindow.get_compositor_private(); if (!actor) return false; - metaWindow.clone.actor.show(); + metaWindow.clone.cloneActor.show(); actor.hide(); return true; } function isWindowAnimating(metaWindow) { let clone = metaWindow.clone; - return clone.get_parent() && clone.actor.visible; + return clone.get_parent() && clone.cloneActor.visible; } function toggleMaximizeHorizontally(metaWindow) { From 7fb9f4a0c11f9861cdb9fbdc4df634fba1a58e03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Hedin=20Br=C3=B8nner?= Date: Mon, 2 Sep 2019 12:13:36 +0200 Subject: [PATCH 3/3] Fix full hot code reload `getCurrentExtension()` does not work with gnome-shell-mode's eval. Use a somewhat verbose feature detection to work around the changes made in 3.34. --- gestures.js | 8 +++++++- keybindings.js | 8 +++++++- kludges.js | 8 +++++++- liveAltTab.js | 8 +++++++- minimap.js | 8 +++++++- navigator.js | 8 +++++++- scratch.js | 8 +++++++- settings.js | 8 +++++++- stackoverlay.js | 8 +++++++- tiling.js | 8 +++++++- topbar.js | 8 +++++++- utils.js | 7 ++++++- 12 files changed, 83 insertions(+), 12 deletions(-) diff --git a/gestures.js b/gestures.js index b28c6f6..b44248e 100644 --- a/gestures.js +++ b/gestures.js @@ -1,4 +1,10 @@ -var Extension = imports.misc.extensionUtils.getCurrentExtension(); +var Extension; +if (imports.misc.extensionUtils.extensions) { + Extension = imports.misc.extensionUtils.extensions["paperwm@hedning:matrix.org"]; +} else { + Extension = imports.ui.main.extensionManager.lookup("paperwm@hedning:matrix.org"); +} + var Meta = imports.gi.Meta; var St = imports.gi.St; var Gio = imports.gi.Gio; diff --git a/keybindings.js b/keybindings.js index 0ad76d2..4ca5d0c 100644 --- a/keybindings.js +++ b/keybindings.js @@ -1,4 +1,10 @@ -var Extension = imports.misc.extensionUtils.getCurrentExtension(); +var Extension; +if (imports.misc.extensionUtils.extensions) { + Extension = imports.misc.extensionUtils.extensions["paperwm@hedning:matrix.org"]; +} else { + Extension = imports.ui.main.extensionManager.lookup("paperwm@hedning:matrix.org"); +} + var Me = Extension.imports.keybindings; var Gdk = imports.gi.Gdk; var Gtk = imports.gi.Gtk; diff --git a/kludges.js b/kludges.js index 9d34fb9..c7f3e96 100644 --- a/kludges.js +++ b/kludges.js @@ -4,7 +4,13 @@ around these problems. */ -var Extension = imports.misc.extensionUtils.getCurrentExtension(); +var Extension; +if (imports.misc.extensionUtils.extensions) { + Extension = imports.misc.extensionUtils.extensions["paperwm@hedning:matrix.org"]; +} else { + Extension = imports.ui.main.extensionManager.lookup("paperwm@hedning:matrix.org"); +} + var Meta = imports.gi.Meta; var Main = imports.ui.main; diff --git a/liveAltTab.js b/liveAltTab.js index 722a4ff..624b934 100644 --- a/liveAltTab.js +++ b/liveAltTab.js @@ -1,4 +1,10 @@ -var Extension = imports.misc.extensionUtils.getCurrentExtension(); +var Extension; +if (imports.misc.extensionUtils.extensions) { + Extension = imports.misc.extensionUtils.extensions["paperwm@hedning:matrix.org"]; +} else { + Extension = imports.ui.main.extensionManager.lookup("paperwm@hedning:matrix.org"); +} + var Clutter = imports.gi.Clutter; var Meta = imports.gi.Meta; var AltTab = imports.ui.altTab; diff --git a/minimap.js b/minimap.js index f920a01..19ae2f4 100644 --- a/minimap.js +++ b/minimap.js @@ -1,4 +1,10 @@ -var Extension = imports.misc.extensionUtils.getCurrentExtension(); +var Extension; +if (imports.misc.extensionUtils.extensions) { + Extension = imports.misc.extensionUtils.extensions["paperwm@hedning:matrix.org"]; +} else { + Extension = imports.ui.main.extensionManager.lookup("paperwm@hedning:matrix.org"); +} + var Clutter = imports.gi.Clutter; var Tweener = imports.ui.tweener; var Main = imports.ui.main; diff --git a/navigator.js b/navigator.js index 3b52452..749c9e7 100644 --- a/navigator.js +++ b/navigator.js @@ -5,7 +5,13 @@ `SwitcherPopup.SwitcherPopup` when we really should just take full control. */ -var Extension = imports.misc.extensionUtils.getCurrentExtension(); +var Extension; +if (imports.misc.extensionUtils.extensions) { + Extension = imports.misc.extensionUtils.extensions["paperwm@hedning:matrix.org"]; +} else { + Extension = imports.ui.main.extensionManager.lookup("paperwm@hedning:matrix.org"); +} + var SwitcherPopup = imports.ui.switcherPopup; var Meta = imports.gi.Meta; var Main = imports.ui.main; diff --git a/scratch.js b/scratch.js index 3b46709..3eb806d 100644 --- a/scratch.js +++ b/scratch.js @@ -1,4 +1,10 @@ -var Extension = imports.misc.extensionUtils.getCurrentExtension(); +var Extension; +if (imports.misc.extensionUtils.extensions) { + Extension = imports.misc.extensionUtils.extensions["paperwm@hedning:matrix.org"]; +} else { + Extension = imports.ui.main.extensionManager.lookup("paperwm@hedning:matrix.org"); +} + var Meta = imports.gi.Meta; var Main = imports.ui.main; diff --git a/settings.js b/settings.js index fb4f49f..298ab74 100644 --- a/settings.js +++ b/settings.js @@ -3,7 +3,13 @@ Settings utility shared between the running extension and the preference UI. */ -var Extension = imports.misc.extensionUtils.getCurrentExtension(); +var Extension; +if (imports.misc.extensionUtils.extensions) { + Extension = imports.misc.extensionUtils.extensions["paperwm@hedning:matrix.org"]; +} else { + Extension = imports.ui.main.extensionManager.lookup("paperwm@hedning:matrix.org"); +} + var Gio = imports.gi.Gio; var GLib = imports.gi.GLib; var Gtk = imports.gi.Gtk; diff --git a/stackoverlay.js b/stackoverlay.js index 3eaa9b0..e1cd0f9 100644 --- a/stackoverlay.js +++ b/stackoverlay.js @@ -1,4 +1,10 @@ -var Extension = imports.misc.extensionUtils.getCurrentExtension(); +var Extension; +if (imports.misc.extensionUtils.extensions) { + Extension = imports.misc.extensionUtils.extensions["paperwm@hedning:matrix.org"]; +} else { + Extension = imports.ui.main.extensionManager.lookup("paperwm@hedning:matrix.org"); +} + var Tiling = Extension.imports.tiling; var Clutter = imports.gi.Clutter; var Tweener = imports.ui.tweener; diff --git a/tiling.js b/tiling.js index c61bfd9..bc30e1b 100644 --- a/tiling.js +++ b/tiling.js @@ -1,4 +1,10 @@ -var Extension = imports.misc.extensionUtils.getCurrentExtension(); +var Extension; +if (imports.misc.extensionUtils.extensions) { + Extension = imports.misc.extensionUtils.extensions["paperwm@hedning:matrix.org"]; +} else { + Extension = imports.ui.main.extensionManager.lookup("paperwm@hedning:matrix.org"); +} + var GLib = imports.gi.GLib; var Tweener = imports.ui.tweener; var Meta = imports.gi.Meta; diff --git a/topbar.js b/topbar.js index f2e0324..fc1a179 100644 --- a/topbar.js +++ b/topbar.js @@ -2,7 +2,13 @@ Functionality related to the top bar, often called the statusbar. */ -var Extension = imports.misc.extensionUtils.getCurrentExtension(); +var Extension; +if (imports.misc.extensionUtils.extensions) { + Extension = imports.misc.extensionUtils.extensions["paperwm@hedning:matrix.org"]; +} else { + Extension = imports.ui.main.extensionManager.lookup("paperwm@hedning:matrix.org"); +} + var Meta = imports.gi.Meta; var St = imports.gi.St; var Gio = imports.gi.Gio; diff --git a/utils.js b/utils.js index d982d9d..0cc9c4c 100644 --- a/utils.js +++ b/utils.js @@ -1,4 +1,9 @@ -const Extension = imports.misc.extensionUtils.getCurrentExtension(); +var Extension; +if (imports.misc.extensionUtils.extensions) { + Extension = imports.misc.extensionUtils.extensions["paperwm@hedning:matrix.org"]; +} else { + Extension = imports.ui.main.extensionManager.lookup("paperwm@hedning:matrix.org"); +} const Gdk = imports.gi.Gdk; var GLib = imports.gi.GLib; var Meta = imports.gi.Meta;