From 4b76e797cfc1ca8221d85c7b003b4cf0e5b0e04f Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Thu, 22 Dec 2011 17:30:43 +0100 Subject: [PATCH] native-window-placement: update for latest gnome-shell changes Recently gnome-shell changed the code to handle the window overlays (to fix some bugs aboud the overlay flashing), which resulted in invisible overlay with this extension. Fix by reimporting some code from gnome-shell core. --- .../native-window-placement/extension.js | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/extensions/native-window-placement/extension.js b/extensions/native-window-placement/extension.js index d3721e09..17910d79 100644 --- a/extensions/native-window-placement/extension.js +++ b/extensions/native-window-placement/extension.js @@ -114,7 +114,6 @@ function enable() { resetState(); let settings = _me.convenience.getSettings(_metadata, 'native-window-placement'); - connectedSignals.push({ obj: settings, id: signalId }); let useMoreScreen = settings.get_boolean('use-more-screen'); signalId = settings.connect('changed::use-more-screen', function() { useMoreScreen = settings.get_boolean('use-more-screen'); @@ -333,7 +332,7 @@ function enable() { if (clone.inDrag) continue; - if (overlay) + if (overlay && initialPositioning) overlay.hide(); if (animate && isOnCurrentWorkspace) { if (!metaWindow.showing_on_its_workspace()) { @@ -356,20 +355,11 @@ function enable() { }); } - Tweener.addTween(clone.actor, - { x: x, - y: y, - scale_x: scale, - scale_y: scale, - time: Overview.ANIMATION_TIME, - transition: 'easeOutQuad', - onComplete: Lang.bind(this, function() { - this._showWindowOverlay(clone, overlay, true); - }) - }); + this._animateClone(clone, overlay, x, y, scale, initialPositioning); } else { clone.actor.set_position(x, y); clone.actor.set_scale(scale, scale); + this._updateWindowOverlayPositions(clone, overlay, x, y, scale, false); this._showWindowOverlay(clone, overlay, isOnCurrentWorkspace); } } @@ -432,7 +422,7 @@ function enable() { }, winInjections['updatePositions'] = Workspace.WindowOverlay.prototype.updatePositions; - Workspace.WindowOverlay.prototype.updatePositions = function(cloneX, cloneY, cloneWidth, cloneHeight) { + Workspace.WindowOverlay.prototype.updatePositions = function(cloneX, cloneY, cloneWidth, cloneHeight, animate) { let button = this.closeButton; let title = this.title; @@ -443,15 +433,24 @@ function enable() { else buttonX = cloneX + (cloneWidth - button._overlap); - button.set_position(Math.floor(buttonX), Math.floor(buttonY)); + if (animate) + this._animateOverlayActor(button, Math.floor(buttonX), Math.floor(buttonY)); + else + button.set_position(Math.floor(buttonX), Math.floor(buttonY)); if (!title.fullWidth) title.fullWidth = title.width; - title.width = Math.min(title.fullWidth, cloneWidth); + let titleWidth = Math.min(title.fullWidth, cloneWidth); - let titleX = cloneX + (cloneWidth - title.width) / 2; + let titleX = cloneX + (cloneWidth - titleWidth) / 2; let titleY = cloneY - title.height + title._overlap; - title.set_position(Math.floor(titleX), Math.floor(titleY)); + + if (animate) + this._animateOverlayActor(title, Math.floor(titleX), Math.floor(titleY)); + else { + title.width = titleWidth; + title.set_position(Math.floor(titleX), Math.floor(titleY)); + } }, winInjections['_onStyleChanged'] = Workspace.WindowOverlay.prototype._onStyleChanged;