From 767d69cd0f98e80e3032fa6a2387c25fc9b95628 Mon Sep 17 00:00:00 2001 From: Balazs Gyurak Date: Sun, 5 Jan 2020 17:41:27 +0000 Subject: [PATCH] Fix: global.screen is not defined in mutter >= 3.29 --- extension.js | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/extension.js b/extension.js index f361718..80c90e8 100644 --- a/extension.js +++ b/extension.js @@ -81,9 +81,9 @@ function moveApp(app, loc) { _log("moveApp: " + JSON.stringify(loc)); var space = null; if (loc.mouse) { - var curMonitor = global.screen.get_current_monitor(); + var curMonitor = getCurrentMonitor(); var monitor = Main.layoutManager.monitors[curMonitor]; - space = global.screen.get_active_workspace().get_work_area_for_monitor(curMonitor); + space = getActiveWorkspace().get_work_area_for_monitor(curMonitor); } else { space = app.get_work_area_current_monitor() } @@ -713,9 +713,9 @@ function checkIfNearGrid(app) { if (windowMoving) { let [x, y, mask] = global.get_pointer(); var close = false; - var curMonitor = global.screen.get_current_monitor(); + var curMonitor = getCurrentMonitor(); var monitor = Main.layoutManager.monitors[curMonitor]; - var space = global.screen.get_active_workspace().get_work_area_for_monitor(curMonitor); + var space = getActiveWorkspace().get_work_area_for_monitor(curMonitor); var colWidth = Math.floor(space.width/config.cols); var rowHeight = Math.floor(space.height/2); var inMonitorBounds = false; @@ -810,6 +810,20 @@ function checkIfNearGrid(app) { } } +function getActiveWorkspace() { + if (global.screen) { // mutter < 3.29 + return global.screen.get_active_workspace() + } else { // mutter >= 3.29 + let workspaceManager = global.workspace_manager; + return workspaceManager.get_active_workspace(); + } +} + +function getCurrentMonitor() { + let monitorProvider = global.screen || global.display; + return monitorProvider.get_current_monitor(); +} + var enable = function() { if (!keyManager) { keyManager = new KeyBindings.Manager();