From 0dca5e513b521edfc40842478bb34969b60478b1 Mon Sep 17 00:00:00 2001 From: Alessandro Bono Date: Sat, 20 May 2017 16:34:35 +0200 Subject: [PATCH] windowManager: Generalize translation values Currently, the translation values are set with the assumption that one of the actors represents a fullscreen window. In order to generalize it for any size change transition, we can simply swap the monitor rect with the source or target rect as appropriate, and translate the actor from the target to the source position by subtracting the former and adding the latter. https://bugzilla.gnome.org/show_bug.cgi?id=766685 --- js/ui/windowManager.js | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js index b9874673c..8b5c46118 100644 --- a/js/ui/windowManager.js +++ b/js/ui/windowManager.js @@ -1331,13 +1331,11 @@ const WindowManager = new Lang.Class({ actorClone.set_size(oldFrameRect.width, oldFrameRect.height); Main.uiGroup.add_actor(actorClone); - let rect = change == Meta.SizeChange.FULLSCREEN ? oldFrameRect : null; - if (this._clearFullscreenInfo(actor)) this._shellwm.completed_size_change(actor); actor.__fullscreenInfo = { clone: actorClone, - oldRect: rect }; + oldRect: oldFrameRect }; }, _sizeChangedWindow: function(shellwm, actor) { @@ -1365,15 +1363,9 @@ const WindowManager = new Lang.Class({ transition: 'easeOutQuad' }); - let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()]; let sourceRect = actor.__fullscreenInfo.oldRect; - if (sourceRect) { - actor.translation_x = sourceRect.x - monitor.x; - actor.translation_y = sourceRect.y - monitor.y; - } else { - actor.translation_x = -(targetRect.x - monitor.x); - actor.translation_y = -(targetRect.y - monitor.y); - } + actor.translation_x = -targetRect.x + sourceRect.x; + actor.translation_y = -targetRect.y + sourceRect.y; // Now set scale the actor to size it as the clone. actor.scale_x = 1 / scaleX;