From e260fc25b73aebcdbe529bdf637fdcc741557704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Hedin=20Br=C3=B8nner?= Date: Fri, 27 Oct 2017 21:03:53 +0200 Subject: [PATCH] Always pass an owner object to `dynamic_function_ref` This way we can remove a bunch more globally declared variables. --- extension.js | 39 ++++++++++++++++++++++++++++----------- liveAltTab.js | 2 +- scratch.js | 2 +- tiling.js | 39 ++++++++++++++++++++------------------- utils.js | 4 ++-- 5 files changed, 52 insertions(+), 34 deletions(-) diff --git a/extension.js b/extension.js index a33972d..5569a85 100644 --- a/extension.js +++ b/extension.js @@ -3,7 +3,7 @@ const convenience = Extension.imports.convenience; const Tiling = Extension.imports.tiling; const Scratch = Extension.imports.scratch; const LiveAltTab = Extension.imports.liveAltTab; -const utils = Extension.utils; +const utils = Extension.imports.utils; const Gio = imports.gi.Gio; const GLib = imports.gi.GLib; const Meta = imports.gi.Meta; @@ -100,6 +100,8 @@ function enable() { initWorkspaces(); } + let dynamic_function_ref = utils.dynamic_function_ref; + settings = new Gio.Settings({ schema_id: "org.gnome.desktop.wm.keybindings"}); settings.set_strv("close", ['c']) @@ -114,24 +116,39 @@ function enable() { as_key_handler("toggle_maximize_horizontally")); Meta.keybindings_set_custom_handler("switch-applications", - dynamic_function_ref("liveAltTab")); + dynamic_function_ref("liveAltTab", + LiveAltTab)); Meta.keybindings_set_custom_handler("switch-to-workspace-up", - dynamic_function_ref("preview_navigate")); + dynamic_function_ref("preview_navigate", + Tiling)); Meta.keybindings_set_custom_handler("switch-to-workspace-down", - dynamic_function_ref("preview_navigate")); + dynamic_function_ref("preview_navigate", + Tiling)); - paperActions.register("switch-next", dynamic_function_ref("preview_navigate")); - paperActions.register("switch-previous", dynamic_function_ref("preview_navigate"), - Meta.KeyBindingFlags.IS_REVERSED); + paperActions.register("switch-next", + dynamic_function_ref("preview_navigate", + Tiling)); + paperActions.register("switch-previous", + dynamic_function_ref("preview_navigate", + Tiling), + Meta.KeyBindingFlags.IS_REVERSED); - paperActions.register("move-left", dynamic_function_ref("preview_navigate")); - paperActions.register("move-right", dynamic_function_ref("preview_navigate")); - paperActions.register("toggle-scratch-layer", dynamic_function_ref("toggleScratch")); + paperActions.register("move-left", + dynamic_function_ref("preview_navigate", + Tiling)); + paperActions.register("move-right", + dynamic_function_ref("preview_navigate", + Tiling)); + paperActions.register("toggle-scratch-layer", + dynamic_function_ref("toggleScratch", + Scratch)); - paperActions.register("develop-set-globals", dynamic_function_ref("setDevGlobals")); + paperActions.register("develop-set-globals", + dynamic_function_ref("setDevGlobals", + utils)); paperActions.register("cycle-width", as_key_handler("cycleWindowWidth"), Meta.KeyBindingFlags.PER_WINDOW); diff --git a/liveAltTab.js b/liveAltTab.js index 5dfb914..2e41860 100644 --- a/liveAltTab.js +++ b/liveAltTab.js @@ -206,7 +206,7 @@ var LiveAltTab = Lang.Class({ }) -liveAltTab = (display, screen, meta_window, binding) => { +var liveAltTab = (display, screen, meta_window, binding) => { let tabPopup = new LiveAltTab(); tabPopup.show(binding.is_reversed(), binding.get_name(), binding.get_mask()); } diff --git a/scratch.js b/scratch.js index e964830..c74294d 100644 --- a/scratch.js +++ b/scratch.js @@ -14,7 +14,7 @@ function isScratchActive() { return getScratchWindows().some(metaWindow => !metaWindow.minimized); } -toggleScratch = function() { +var toggleScratch = function() { let windows = getScratchWindows(); let isSomeShown = isScratchActive(); diff --git a/tiling.js b/tiling.js index 2a372c7..3516066 100644 --- a/tiling.js +++ b/tiling.js @@ -11,6 +11,7 @@ const utils = Extension.imports.utils; const Clutter = imports.gi.Clutter; var Minimap = Extension.imports.minimap; +var Me = Extension.imports.tiling; let preferences = Extension.imports.convenience.getSettings(); // Gap between windows @@ -60,10 +61,10 @@ var Space = (workspace) => { space.workspace = workspace; space.addSignal = workspace.connect("window-added", - dynamic_function_ref("add_handler")); + utils.dynamic_function_ref("add_handler", Me)); space.removeSignal = workspace.connect("window-removed", - dynamic_function_ref("remove_handler")); + utils.dynamic_function_ref("remove_handler", Me)); space.selectedWindow = null; space.moving = false; space.leftStack = 0; // not implemented @@ -110,11 +111,11 @@ var spaces = (function () { spaces.nWorkspacesSignal = global.screen.connect('notify::n-workspaces', - Lang.bind(spaces, dynamic_function_ref('workspacesChanged', spaces))); + Lang.bind(spaces, utils.dynamic_function_ref('workspacesChanged', spaces))); spaces.windowCreatedSignal = global.display.connect('window-created', - dynamic_function_ref('window_created')); + utils.dynamic_function_ref('window_created', spaces)); spaces.workspacesChanged = function () { let nWorkspaces = global.screen.n_workspaces; @@ -162,6 +163,18 @@ var spaces = (function () { return this._spaces[workspace]; }; + spaces.window_created = function (display, metaWindow, user_data) { + // Only run setInitialPosition on inserted windows + if (!metaWindow[isInserted]) + return; + delete metaWindow[isInserted]; + debug('window-created', metaWindow.title); + let actor = metaWindow.get_compositor_private(); + let signal = Symbol(); + metaWindow[signal] = actor.connect('first-frame', + Lang.bind({metaWindow, signal}, setInitialPosition)); + }; + return spaces; })(); window.spaces = spaces; @@ -292,18 +305,6 @@ var insertWindow = function(space, metaWindow, index) { } } -window_created = (display, metaWindow, user_data) => { - // Only run setInitialPosition on inserted windows - if (!metaWindow[isInserted]) - return; - delete metaWindow[isInserted]; - debug('window-created', metaWindow.title); - let actor = metaWindow.get_compositor_private(); - let signal = Symbol(); - metaWindow[signal] = actor.connect('first-frame', - Lang.bind({metaWindow, signal}, setInitialPosition)); -} - // Needs to be called by {metaWindow, signal} setInitialPosition = function(actor, existing) { let {metaWindow, signal} = this; @@ -582,7 +583,7 @@ defwinprop({ scratch_layer: true }); -add_handler = (ws, meta_window) => { +var add_handler = (ws, meta_window) => { debug("window-added", meta_window, meta_window.title, meta_window.window_type, ws.index()); if (!add_filter(meta_window)) { return; @@ -628,7 +629,7 @@ add_handler = (ws, meta_window) => { insertWindow(space, meta_window, insert_after_i + 1); } -remove_handler = (workspace, meta_window) => { +var remove_handler = (workspace, meta_window) => { debug("window-removed", meta_window, meta_window.title, workspace.index()); // Note: If `meta_window` was closed and had focus at the time, the next // window has already received the `focus` signal at this point. @@ -973,7 +974,7 @@ var PreviewedWindowNavigator = new Lang.Class({ } }); -preview_navigate = (display, screen, meta_window, binding) => { +var preview_navigate = (display, screen, meta_window, binding) => { let tabPopup = new PreviewedWindowNavigator(); tabPopup.show(binding.is_reversed(), binding.get_name(), binding.get_mask()) } diff --git a/utils.js b/utils.js index 8be9b1a..b089e70 100644 --- a/utils.js +++ b/utils.js @@ -41,7 +41,7 @@ var framestr = (rect) => { * redefine the function without re-registering all signal handler, keybindings, * etc. (this is like a function symbol in lisp) */ -dynamic_function_ref = function(handler_name, owner_obj) { +var dynamic_function_ref = function(handler_name, owner_obj) { owner_obj = owner_obj || window; return function() { owner_obj[handler_name].apply(this, arguments); @@ -72,7 +72,7 @@ function in_bounds(array, i) { //// Debug and development utils -setDevGlobals = function() { +var setDevGlobals = function() { // Accept the risk of this interfering with existing code for now metaWindow = global.display.focus_window; workspace = global.screen.get_active_workspace();