iconGrid: Only animate visible icons

Mutter recently added an optimization to only allocate
visible children [1]. That broke ClutterClones, but it
was subsequently fixed [2].

However, that exposed a third problem, this time with
FrequentView: visible but transparent icons, that are
not allocated by the icon grid, were cloned and animated
during the spring animation.

Only animate visible icons with opacity greater than 0.

[1] https://gitlab.gnome.org/GNOME/mutter/commit/0eab73dc
[2] https://gitlab.gnome.org/GNOME/mutter/commit/08a3cbfc

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/696
This commit is contained in:
Georges Basile Stavracas Neto 2019-08-31 12:32:31 -03:00 committed by Florian Müllner
parent 3d86e6e791
commit 413c677fcf

View File

@ -427,7 +427,7 @@ var IconGrid = GObject.registerClass({
* set of items to be animated. * set of items to be animated.
*/ */
_getChildrenToAnimate() { _getChildrenToAnimate() {
return this._getVisibleChildren(); return this._getVisibleChildren().filter(child => child.opacity > 0);
} }
_resetAnimationActors() { _resetAnimationActors() {
@ -884,7 +884,7 @@ var PaginatedIconGrid = GObject.registerClass({
// Overridden from IconGrid // Overridden from IconGrid
_getChildrenToAnimate() { _getChildrenToAnimate() {
let children = this._getVisibleChildren(); let children = super._getChildrenToAnimate();
let firstIndex = this._childrenPerPage * this.currentPage; let firstIndex = this._childrenPerPage * this.currentPage;
let lastIndex = firstIndex + this._childrenPerPage; let lastIndex = firstIndex + this._childrenPerPage;