diff --git a/js/ui/main.js b/js/ui/main.js index 310a3edd5..c6b09d9c6 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -329,3 +329,25 @@ function currentTime() { return Clutter.get_current_event_time(); } + +/** + * activateWindow: + * @window: the Meta.Window to activate + * @time: (optional) current event time + * + * Activates @window, switching to its workspace first if necessary + */ +function activateWindow(window, time) { + let activeWorkspaceNum = global.screen.get_active_workspace_index(); + let windowWorkspaceNum = window.get_workspace().index(); + + if (!time) + time = currentTime(); + + if (windowWorkspaceNum != activeWorkspaceNum) { + let workspace = global.screen.get_workspace_by_index(windowWorkspaceNum); + workspace.activate_with_focus(window, time); + } else { + window.activate(time); + } +} diff --git a/js/ui/workspaces.js b/js/ui/workspaces.js index 7c6de26c7..41042d779 100644 --- a/js/ui/workspaces.js +++ b/js/ui/workspaces.js @@ -1409,21 +1409,6 @@ Workspaces.prototype = { } }, - _activateWindowInternal: function (metaWindow, time) { - let activeWorkspaceNum = global.screen.get_active_workspace_index(); - let windowWorkspaceNum = metaWindow.get_workspace().index(); - - let clone = this._lookupCloneForMetaWindow (metaWindow); - clone.actor.raise_top(); - - if (windowWorkspaceNum != activeWorkspaceNum) { - let workspace = global.screen.get_workspace_by_index(windowWorkspaceNum); - workspace.activate_with_focus(metaWindow, time); - } else { - metaWindow.activate(time); - } - }, - /** * activateWindowFromOverview: * @metaWindow: A #MetaWindow @@ -1436,7 +1421,11 @@ Workspaces.prototype = { if (this._windowSelectionAppId != null) { this._clearApplicationWindowSelection(false); } - this._activateWindowInternal(metaWindow, time); + + let clone = this._lookupCloneForMetaWindow (metaWindow); + clone.actor.raise_top(); + + Main.activateWindow(metaWindow, time); Main.overview.hide(); },