workspace: Unbreak reposition animation

Commit 1ea22a5281 broke the window reposition animation when it
based the ::size-changed signal on the layout manager's bounding box
instead of the MetaWindow::size-changed signal.

That's happening because of the combination of:

  1. we adjust to window size changes immediately without animations
  2. closing a window triggers a change to a 0x0 bounding box which
     is not treated as a size change

Fix this by addressing the 2nd factor, and don't treat a change to
a 0x0 bounding box as size change.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2901
This commit is contained in:
Florian Müllner 2020-06-14 01:02:52 +02:00 committed by Florian Müllner
parent af543daf1c
commit b2c35e4fb0

View File

@ -236,7 +236,11 @@ var WindowClone = GObject.registerClass({
this._stackAbove = null; this._stackAbove = null;
this._windowContainer.layout_manager.connect( this._windowContainer.layout_manager.connect(
'notify::bounding-box', () => this.emit('size-changed')); 'notify::bounding-box', layout => {
// A bounding box of 0x0 means all windows were removed
if (layout.bounding_box.get_area() > 0)
this.emit('size-changed');
});
this._windowDestroyId = this._windowDestroyId =
this.realWindow.connect('destroy', () => this.destroy()); this.realWindow.connect('destroy', () => this.destroy());