From 6583eae6225039b6b711918eff3a7cd0d03a42ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 3 Jan 2018 16:00:23 +0800 Subject: [PATCH] Remove usage of MetaScreen As of the libmutter API version 3 MetaScreen does no longer exist. Functionality that previously depended on MetaScreen has been moved elsewhere (e.g. MetaDisplay or MetaWorkspaceManager etc). https://bugzilla.gnome.org/show_bug.cgi?id=759538 --- extensions/alternate-tab/extension.js | 2 +- extensions/auto-move-windows/extension.js | 5 +- .../screenshot-window-sizer/extension.js | 2 +- extensions/window-list/extension.js | 84 +++++++++++-------- extensions/windowsNavigator/extension.js | 8 +- extensions/workspace-indicator/extension.js | 37 ++++---- 6 files changed, 81 insertions(+), 57 deletions(-) diff --git a/extensions/alternate-tab/extension.js b/extensions/alternate-tab/extension.js index 58f212a1..3e912d82 100644 --- a/extensions/alternate-tab/extension.js +++ b/extensions/alternate-tab/extension.js @@ -31,7 +31,7 @@ function enable() { return injections['_keyPressHandler'].call(this, keysym, action); }; - Main.wm._forcedWindowSwitcher = function(display, screen, window, binding) { + Main.wm._forcedWindowSwitcher = function(display, window, binding) { /* prevent a corner case where both popups show up at once */ if (this._workspaceSwitcherPopup != null) this._workspaceSwitcherPopup.destroy(); diff --git a/extensions/auto-move-windows/extension.js b/extensions/auto-move-windows/extension.js index 5e4bd6d8..cf417ec5 100644 --- a/extensions/auto-move-windows/extension.js +++ b/extensions/auto-move-windows/extension.js @@ -79,9 +79,10 @@ class WindowMover { return; // ensure we have the required number of workspaces - for (let i = global.screen.n_workspaces; i <= workspaceNum; i++) { + let workspaceManager = global.workspace_manager; + for (let i = workspaceManager.n_workspaces; i <= workspaceNum; i++) { window.change_workspace_by_index(i - 1, false); - global.screen.append_new_workspace(false, 0); + workspaceManager.append_new_workspace(false, 0); } window.change_workspace_by_index(workspaceNum, false); diff --git a/extensions/screenshot-window-sizer/extension.js b/extensions/screenshot-window-sizer/extension.js index 681c30ff..42abcb79 100644 --- a/extensions/screenshot-window-sizer/extension.js +++ b/extensions/screenshot-window-sizer/extension.js @@ -69,7 +69,7 @@ let SIZES = [ [1600, 900] ]; -function cycleScreenshotSizes(display, screen, window, binding) { +function cycleScreenshotSizes(display, window, binding) { // Probably this isn't useful with 5 sizes, but you can decrease instead // of increase by holding down shift. let modifiers = binding.get_modifiers(); diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js index 716a324a..96b252a2 100644 --- a/extensions/window-list/extension.js +++ b/extensions/window-list/extension.js @@ -238,10 +238,10 @@ class BaseButton { if (this._perMonitor) { this._windowEnteredMonitorId = - global.screen.connect('window-entered-monitor', + global.display.connect('window-entered-monitor', this._windowEnteredOrLeftMonitor.bind(this)); this._windowLeftMonitorId = - global.screen.connect('window-left-monitor', + global.display.connect('window-left-monitor', this._windowEnteredOrLeftMonitor.bind(this)); } } @@ -282,12 +282,12 @@ class BaseButton { this.actor.remove_style_class_name('focused'); } - _windowEnteredOrLeftMonitor(metaScreen, monitorIndex, metaWindow) { + _windowEnteredOrLeftMonitor(metaDisplay, monitorIndex, metaWindow) { throw new Error('Not implemented'); } _isWindowVisible(window) { - let workspace = global.screen.get_active_workspace(); + let workspace = global.workspace_manager.get_active_workspace(); return !window.skip_taskbar && window.located_on_workspace(workspace) && @@ -315,11 +315,11 @@ class BaseButton { global.window_manager.disconnect(this._switchWorkspaceId); if (this._windowEnteredMonitorId) - global.screen.disconnect(this._windowEnteredMonitorId); + global.display.disconnect(this._windowEnteredMonitorId); this._windowEnteredMonitorId = 0; if (this._windowLeftMonitorId) - global.screen.disconnect(this._windowLeftMonitorId); + global.display.disconnect(this._windowLeftMonitorId); this._windowLeftMonitorId = 0; } }; @@ -377,7 +377,7 @@ class WindowButton extends BaseButton { this.actor.remove_style_class_name('minimized'); } - _windowEnteredOrLeftMonitor(metaScreen, monitorIndex, metaWindow) { + _windowEnteredOrLeftMonitor(metaDisplay, monitorIndex, metaWindow) { if (monitorIndex == this._monitorIndex && metaWindow == this.metaWindow) this._updateVisibility(); } @@ -518,7 +518,7 @@ class AppButton extends BaseButton { this._updateStyle(); } - _windowEnteredOrLeftMonitor(metaScreen, monitorIndex, metaWindow) { + _windowEnteredOrLeftMonitor(metaDisplay, monitorIndex, metaWindow) { if (this._windowTracker.get_window_app(metaWindow) == this.app && monitorIndex == this._monitorIndex) { this._updateVisibility(); @@ -529,7 +529,7 @@ class AppButton extends BaseButton { _updateVisibility() { if (!this._perMonitor) { // fast path: use ShellApp API to avoid iterating over all windows. - let workspace = global.screen.get_active_workspace(); + let workspace = global.workspace_manager.get_active_workspace(); this.actor.visible = this.app.is_on_workspace(workspace); } else { this.actor.visible = this.getWindowList().length >= 1; @@ -652,7 +652,9 @@ class WorkspaceIndicator extends PanelMenu.Button { x_expand: true, y_expand: true }); this.actor.add_actor(container); - this._currentWorkspace = global.screen.get_active_workspace().index(); + let workspaceManager = global.workspace_manager; + + this._currentWorkspace = workspaceManager.get_active_workspace().index(); this.statusLabel = new St.Label({ text: this._getStatusText(), x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER }); @@ -660,11 +662,11 @@ class WorkspaceIndicator extends PanelMenu.Button { this.workspacesItems = []; - this._screenSignals = []; - this._screenSignals.push(global.screen.connect('notify::n-workspaces', - this._updateMenu.bind(this))); - this._screenSignals.push(global.screen.connect_after('workspace-switched', - this._updateIndicator.bind(this))); + this._workspaceManagerSignals = []; + this._workspaceManagerSignals.push(workspaceManager.connect('notify::n-workspaces', + this._updateMenu.bind(this))); + this._workspaceManagerSignals.push(workspaceManager.connect_after('workspace-switched', + this._updateIndicator.bind(this))); this.actor.connect('scroll-event', this._onScrollEvent.bind(this)); this._updateMenu(); @@ -676,8 +678,8 @@ class WorkspaceIndicator extends PanelMenu.Button { } destroy() { - for (let i = 0; i < this._screenSignals.length; i++) - global.screen.disconnect(this._screenSignals[i]); + for (let i = 0; i < this._workspaceManagerSignals.length; i++) + global.workspace_manager.disconnect(this._workspaceManagerSignals[i]); if (this._settingsChangedId) { this._settings.disconnect(this._settingsChangedId); @@ -689,25 +691,28 @@ class WorkspaceIndicator extends PanelMenu.Button { _updateIndicator() { this.workspacesItems[this._currentWorkspace].setOrnament(PopupMenu.Ornament.NONE); - this._currentWorkspace = global.screen.get_active_workspace().index(); + this._currentWorkspace = global.workspace_manager.get_active_workspace().index(); this.workspacesItems[this._currentWorkspace].setOrnament(PopupMenu.Ornament.DOT); this.statusLabel.set_text(this._getStatusText()); } _getStatusText() { - let current = global.screen.get_active_workspace().index(); - let total = global.screen.n_workspaces; + let workspaceManager = global.workspace_manager; + let current = workspaceManager.get_active_workspace().index(); + let total = workspaceManager.n_workspaces; return '%d / %d'.format(current + 1, total); } _updateMenu() { + let workspaceManager = global.workspace_manager; + this.menu.removeAll(); this.workspacesItems = []; - this._currentWorkspace = global.screen.get_active_workspace().index(); + this._currentWorkspace = workspaceManager.get_active_workspace().index(); - for(let i = 0; i < global.screen.n_workspaces; i++) { + for(let i = 0; i < workspaceManager.n_workspaces; i++) { let name = Meta.prefs_get_workspace_name(i); let item = new PopupMenu.PopupMenuItem(name); item.workspaceId = i; @@ -727,8 +732,10 @@ class WorkspaceIndicator extends PanelMenu.Button { } _activate(index) { - if(index >= 0 && index < global.screen.n_workspaces) { - let metaWorkspace = global.screen.get_workspace_by_index(index); + let workspaceManager = global.workspace_manager; + + if(index >= 0 && index < workspaceManager.n_workspaces) { + let metaWorkspace = workspaceManager.get_workspace_by_index(index); metaWorkspace.activate(global.get_current_time()); } } @@ -833,10 +840,12 @@ class WindowList { this._updateKeyboardAnchor(); }); + let workspaceManager = global.workspace_manager; + this._workspaceSignals = new Map(); this._nWorkspacesChangedId = - global.screen.connect('notify::n-workspaces', - this._onWorkspacesChanged.bind(this)); + workspaceManager.connect('notify::n-workspaces', + this._onWorkspacesChanged.bind(this)); this._onWorkspacesChanged(); this._switchWorkspaceId = @@ -856,7 +865,7 @@ class WindowList { }); this._fullscreenChangedId = - global.screen.connect('in-fullscreen-changed', () => { + global.display.connect('in-fullscreen-changed', () => { this._updateKeyboardAnchor(); }); @@ -923,8 +932,9 @@ class WindowList { } _updateWorkspaceIndicatorVisibility() { + let workspaceManager = global.workspace_manager; let hasWorkspaces = this._dynamicWorkspacesSettings.get_boolean('dynamic-workspaces') || - global.screen.n_workspaces > 1; + workspaceManager.n_workspaces > 1; let workspacesOnMonitor = this._monitor == Main.layoutManager.primaryMonitor || !this._workspaceSettings.get_boolean('workspaces-only-on-primary'); @@ -939,7 +949,7 @@ class WindowList { let [, childWidth] = children[0].get_preferred_width(-1); let spacing = this._windowList.layout_manager.spacing; - let workspace = global.screen.get_active_workspace(); + let workspace = global.workspace_manager.get_active_workspace(); let windows = global.display.get_tab_list(Meta.TabList.NORMAL, workspace); if (this._perMonitor) windows = windows.filter(w => w.get_monitor() == this._monitor.index); @@ -1079,9 +1089,11 @@ class WindowList { } _onWorkspacesChanged() { - let numWorkspaces = global.screen.n_workspaces; + let workspaceManager = global.workspace_manager; + let numWorkspaces = workspaceManager.n_workspaces; + for (let i = 0; i < numWorkspaces; i++) { - let workspace = global.screen.get_workspace_by_index(i); + let workspace = workspaceManager.get_workspace_by_index(i); if (this._workspaceSignals.has(workspace)) continue; @@ -1099,9 +1111,11 @@ class WindowList { } _disconnectWorkspaceSignals() { - let numWorkspaces = global.screen.n_workspaces; + let workspaceManager = global.workspace_manager; + let numWorkspaces = workspaceManager.n_workspaces; + for (let i = 0; i < numWorkspaces; i++) { - let workspace = global.screen.get_workspace_by_index(i); + let workspace = workspaceManager.get_workspace_by_index(i); let signals = this._workspaceSignals.get(workspace); this._workspaceSignals.delete(workspace); workspace.disconnect(signals._windowAddedId); @@ -1179,7 +1193,7 @@ class WindowList { Main.layoutManager.hideKeyboard(); this._disconnectWorkspaceSignals(); - global.screen.disconnect(this._nWorkspacesChangedId); + global.workspace_manager.disconnect(this._nWorkspacesChangedId); this._nWorkspacesChangedId = 0; global.window_manager.disconnect(this._switchWorkspaceId); @@ -1189,7 +1203,7 @@ class WindowList { Main.overview.disconnect(this._overviewShowingId); Main.overview.disconnect(this._overviewHidingId); - global.screen.disconnect(this._fullscreenChangedId); + global.display.disconnect(this._fullscreenChangedId); Main.xdndHandler.disconnect(this._dragBeginId); Main.xdndHandler.disconnect(this._dragEndId); diff --git a/extensions/windowsNavigator/extension.js b/extensions/windowsNavigator/extension.js index 8c86f0f6..7d498903 100644 --- a/extensions/windowsNavigator/extension.js +++ b/extensions/windowsNavigator/extension.js @@ -135,14 +135,16 @@ function enable() { if(Main.overview.viewSelector._activePage != Main.overview.viewSelector._workspacesPage) return false; + let workspaceManager = global.workspace_manager; + if ((o.get_key_symbol() == Clutter.KEY_Alt_L || o.get_key_symbol() == Clutter.KEY_Alt_R) && !this._pickWorkspace) { this._prevFocusActor = global.stage.get_key_focus(); global.stage.set_key_focus(null); - this._active = global.screen.get_active_workspace_index(); + this._active = workspaceManager.get_active_workspace_index(); this._pickWindow = true; - this._workspaces[global.screen.get_active_workspace_index()].showWindowsTooltips(); + this._workspaces[workspaceManager.get_active_workspace_index()].showWindowsTooltips(); return true; } if ((o.get_key_symbol() == Clutter.KEY_Control_L || @@ -166,7 +168,7 @@ function enable() { return true; if (this._pickWindow) { - if (this._active != global.screen.get_active_workspace_index()) { + if (this._active != workspaceManager.get_active_workspace_index()) { this._hideTooltips(); return false; } diff --git a/extensions/workspace-indicator/extension.js b/extensions/workspace-indicator/extension.js index ace17039..162345a7 100644 --- a/extensions/workspace-indicator/extension.js +++ b/extensions/workspace-indicator/extension.js @@ -25,7 +25,9 @@ class WorkspaceIndicator extends PanelMenu.Button { constructor() { super(0.0, _("Workspace Indicator")); - this._currentWorkspace = global.screen.get_active_workspace().index(); + let workspaceManager = global.workspace_manager; + + this._currentWorkspace = workspaceManager.get_active_workspace().index(); this.statusLabel = new St.Label({ y_align: Clutter.ActorAlign.CENTER, text: this._labelText() }); @@ -35,12 +37,13 @@ class WorkspaceIndicator extends PanelMenu.Button { this._workspaceSection = new PopupMenu.PopupMenuSection(); this.menu.addMenuItem(this._workspaceSection); - this._screenSignals = []; - this._screenSignals.push(global.screen.connect_after('workspace-added', this._createWorkspacesSection.bind(this))); - this._screenSignals.push(global.screen.connect_after('workspace-removed', - this._createWorkspacesSection.bind(this))); - this._screenSignals.push(global.screen.connect_after('workspace-switched', - this._updateIndicator.bind(this))); + this._workspaceManagerSignals = []; + this._workspaceManagerSignals.push(workspaceManager.connect_after('workspace-added', + this._createWorkspacesSection.bind(this))); + this._workspaceManagerSignals.push(workspaceManager.connect_after('workspace-removed', + this._createWorkspacesSection.bind(this))); + this._workspaceManagerSignals.push(workspaceManager.connect_after('workspace-switched', + this._updateIndicator.bind(this))); this.actor.connect('scroll-event', this._onScrollEvent.bind(this)); this._createWorkspacesSection(); @@ -55,8 +58,8 @@ class WorkspaceIndicator extends PanelMenu.Button { } destroy() { - for (let i = 0; i < this._screenSignals.length; i++) - global.screen.disconnect(this._screenSignals[i]); + for (let i = 0; i < this._workspaceManagerSignals.length; i++) + global.workspace_manager.disconnect(this._workspaceManagerSignals[i]); if (this._settingsChangedId) { this._settings.disconnect(this._settingsChangedId); @@ -68,7 +71,7 @@ class WorkspaceIndicator extends PanelMenu.Button { _updateIndicator() { this.workspacesItems[this._currentWorkspace].setOrnament(PopupMenu.Ornament.NONE); - this._currentWorkspace = global.screen.get_active_workspace().index(); + this._currentWorkspace = global.workspace_manager.get_active_workspace().index(); this.workspacesItems[this._currentWorkspace].setOrnament(PopupMenu.Ornament.DOT); this.statusLabel.set_text(this._labelText()); @@ -83,12 +86,14 @@ class WorkspaceIndicator extends PanelMenu.Button { } _createWorkspacesSection() { + let workspaceManager = global.workspace_manager; + this._workspaceSection.removeAll(); this.workspacesItems = []; - this._currentWorkspace = global.screen.get_active_workspace().index(); + this._currentWorkspace = workspaceManager.get_active_workspace().index(); let i = 0; - for(; i < global.screen.n_workspaces; i++) { + for(; i < workspaceManager.n_workspaces; i++) { this.workspacesItems[i] = new PopupMenu.PopupMenuItem(this._labelText(i)); this._workspaceSection.addMenuItem(this.workspacesItems[i]); this.workspacesItems[i].workspaceId = i; @@ -106,8 +111,10 @@ class WorkspaceIndicator extends PanelMenu.Button { } _activate(index) { - if(index >= 0 && index < global.screen.n_workspaces) { - let metaWorkspace = global.screen.get_workspace_by_index(index); + let workspaceManager = global.workspace_manager; + + if(index >= 0 && index < workspaceManager.n_workspaces) { + let metaWorkspace = workspaceManager.get_workspace_by_index(index); metaWorkspace.activate(global.get_current_time()); } } @@ -123,7 +130,7 @@ class WorkspaceIndicator extends PanelMenu.Button { return; } - let newIndex = global.screen.get_active_workspace().index() + diff; + let newIndex = global.workspace_manager.get_active_workspace().index() + diff; this._activate(newIndex); } };