diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js index 61d4f96f1..97601eee4 100644 --- a/js/ui/windowManager.js +++ b/js/ui/windowManager.js @@ -1299,6 +1299,8 @@ var WindowManager = class { actorClone.set_position(oldFrameRect.x, oldFrameRect.y); actorClone.set_size(oldFrameRect.width, oldFrameRect.height); + actor.freeze(); + if (this._clearAnimationInfo(actor)) this._shellwm.completed_size_change(actor); @@ -1307,9 +1309,12 @@ var WindowManager = class { }); this._resizePending.add(actor); - actor.__animationInfo = { clone: actorClone, - oldRect: oldFrameRect, - destroyId }; + actor.__animationInfo = { + clone: actorClone, + oldRect: oldFrameRect, + frozen: true, + destroyId, + }; } _sizeChangedWindow(shellwm, actor) { @@ -1362,13 +1367,17 @@ var WindowManager = class { // Now unfreeze actor updates, to get it to the new size. // It's important that we don't wait until the animation is completed to // do this, otherwise our scale will be applied to the old texture size. - shellwm.completed_size_change(actor); + actor.thaw(); + actor.__animationInfo.frozen = false; } _clearAnimationInfo(actor) { if (actor.__animationInfo) { actor.__animationInfo.clone.destroy(); actor.disconnect(actor.__animationInfo.destroyId); + if (actor.__animationInfo.frozen) + actor.thaw(); + delete actor.__animationInfo; return true; } @@ -1383,6 +1392,7 @@ var WindowManager = class { actor.translation_x = 0; actor.translation_y = 0; this._clearAnimationInfo(actor); + this._shellwm.completed_size_change(actor); } if (this._resizePending.delete(actor)) {