From a2b5a26838e778b0e2e27fdf9d8ef2adaac2cef4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Hedin=20Br=C3=B8nner?= Date: Wed, 18 Jul 2018 10:46:59 +0200 Subject: [PATCH] Expose the workspace preview in Tiling.inPreview Might not be ideal, but having it on spaces can cause trouble if ensureVievport is called before spaces is constructed fully. --- navigator.js | 5 ++--- tiling.js | 23 ++++++++++++++--------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/navigator.js b/navigator.js index 1bb4613..7d6340b 100644 --- a/navigator.js +++ b/navigator.js @@ -29,7 +29,6 @@ var display = global.display; var scale = 0.9; var navigating = false; -var workspaceMru = false; // Dummy class to satisfy `SwitcherPopup.SwitcherPopup` class SwitcherList { @@ -165,8 +164,8 @@ var PreviewedWindowNavigator = new Lang.Class({ if (workspaceMru) this.space.monitor.clickOverlay.hide(); - let force = Tiling.spaces._inPreview; - navigating = false; workspaceMru = false; + let force = Tiling.inPreview; + navigating = false; if (force) { this.space = Tiling.spaces.selectedSpace; diff --git a/tiling.js b/tiling.js index 310a5a0..6e5f119 100644 --- a/tiling.js +++ b/tiling.js @@ -36,6 +36,8 @@ var minimumMargin = 15; var panelBox = Main.layoutManager.panelBox; +var inPreview = false; + var signals, oldSpaces, backgroundGroup, oldMonitors; function init() { // Symbol to retrieve the focus handler id @@ -481,7 +483,7 @@ class Space extends Array { moveDone() { if (this.cloneContainer.x !== this.targetX - || Navigator.navigating || noAnimate) { + || Navigator.navigating || inPreview || noAnimate) { return; } this.getWindows().forEach(w => { @@ -731,7 +733,6 @@ class Spaces extends Map { let signals = new utils.Signals(); this.signals = signals; - this._inPreview = false; this._moving = []; this._yPositions = [0.95, 0.10, 0.035, 0.01]; @@ -824,7 +825,10 @@ class Spaces extends Map { } this.forEach(space => { space.layout(false); - let selected = activeSpace.selectedWindow; + let selected = space.selectedWindow; + if (selected) { + ensureViewport(selected, space, true); + } }); this.spaceContainer.show(); }; @@ -1006,12 +1010,12 @@ class Spaces extends Map { let space = this.spaceOf(screen.get_active_workspace()); let mru = [space, ...this.stack]; - if (!this._inPreview) { + if (!inPreview) { if (Main.panel.statusArea.appMenu) Main.panel.statusArea.appMenu.container.hide(); let monitor = space.monitor; this.selectedSpace = space; - this._inPreview = space; + inPreview = true; let heights = [0].concat(this._yPositions.slice(1)); @@ -1125,6 +1129,7 @@ class Spaces extends Map { } animateToSpace(to, from, callback) { + inPreview = false; TopBar.updateWorkspaceIndicator(to.workspace.index()); this._moving.forEach(w => { @@ -1137,7 +1142,6 @@ class Spaces extends Map { let xDest = 0, yDest = global.screen_height; - this._inPreview = false; this.selectedSpace = to; to.actor.show(); @@ -1615,7 +1619,7 @@ function ensureViewport(meta_window, space, force) { let selected = space.selectedWindow; - if (!spaces._inPreview && (selected.fullscreen + if (!inPreview && (selected.fullscreen || selected.get_maximized() === Meta.MaximizeFlags.BOTH)) { Tweener.addTween(selected.clone, { y: frame.y - monitor.y, @@ -1665,7 +1669,7 @@ function move_to(space, metaWindow, { x, y, delay, transition, let clone = metaWindow.clone; let delta = Math.round(clone.targetX) + space.targetX - x; let target = space.targetX - delta; - if (!Navigator._inPreview && delta === 0 && !force) { + if (!inPreview && delta === 0 && !force) { space.moveDone(); return; } @@ -1795,7 +1799,8 @@ function showHandler(actor) { if (Scratch.isScratchWindow(metaWindow)) return; - if (metaWindow.clone.visible || ! onActive || Navigator.navigating) { + if (metaWindow.clone.visible || ! onActive || Navigator.navigating + || inPreview) { actor.hide(); metaWindow.clone.show(); }