From 3e0772bac6f0bcf005a8956cd6353e88e1b6d666 Mon Sep 17 00:00:00 2001 From: Florian Müllner Date: Sep 20 2019 21:58:39 +0000 Subject: Fix disappearing icons in frequent view https://bugzilla.redhat.com/show_bug.cgi?id=1753337 --- diff --git a/fix-disappearing-icons.patch b/fix-disappearing-icons.patch new file mode 100644 index 0000000..c88db4e --- /dev/null +++ b/fix-disappearing-icons.patch @@ -0,0 +1,90 @@ +From 4915a9e8e404555379aa8807ad8c53c7589f2ae7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= +Date: Sun, 8 Sep 2019 18:09:23 +0200 +Subject: [PATCH 1/2] iconGrid: Delete private child property when removing + child + +Delete a private property we set when the child got added to make sure +the reference is deleted after the child got removed from the grid. + +https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/704 +--- + js/ui/iconGrid.js | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/js/ui/iconGrid.js b/js/ui/iconGrid.js +index e0a1e8bd8..08d72aff1 100644 +--- a/js/ui/iconGrid.js ++++ b/js/ui/iconGrid.js +@@ -251,6 +251,7 @@ var IconGrid = GObject.registerClass({ + + _childRemoved(grid, child) { + child.disconnect(child._iconGridKeyFocusInId); ++ delete child._iconGridKeyFocusInId; + } + + vfunc_get_preferred_width(_forHeight) { +-- +2.23.0 + + +From 004a5e104256da8ec3a845e86c6a10b5c7998b24 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= +Date: Fri, 6 Sep 2019 11:50:52 +0200 +Subject: [PATCH 2/2] iconGrid: Queue a relayout after child opacity changes + +We're using a vfunc override for `get_paint_volume` to exclude children +with an opacity of 0 from the paint volume and thus decrease the size of +the area we need to paint. + +Now if the paint volume is requested during the spring animation (the +real icons are hidden using an opacity of 0 and clones are used for the +animation), `get_paint_volume` returns a paint volume with a height of +0. After that, the spring animation finishes and the icon-opacities are +set to 255 in `_resetAnimationActors`, and since we cache paint volumes +and there's no reason for Clutter to assume it got invalid, the icons +end up not being painted. + +Fix this by queuing a relayout of the grid when the opacity of a child +is changed from or to 0, which manually invalidates the paint volume. + +The reason why this is not an issue with the paginated icon grid +(all-apps view) is probably because StScrollView invalidates the paint +volume a lot more often than regular containers. + +Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/1502 +--- + js/ui/iconGrid.js | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/js/ui/iconGrid.js b/js/ui/iconGrid.js +index 08d72aff1..1d22e821a 100644 +--- a/js/ui/iconGrid.js ++++ b/js/ui/iconGrid.js +@@ -247,11 +247,23 @@ var IconGrid = GObject.registerClass({ + + _childAdded(grid, child) { + child._iconGridKeyFocusInId = child.connect('key-focus-in', this._keyFocusIn.bind(this)); ++ ++ child._paintVisible = child.opacity > 0; ++ child._opacityChangedId = child.connect('notify::opacity', () => { ++ let paintVisible = child._paintVisible; ++ child._paintVisible = child.opacity > 0; ++ if (paintVisible !== child._paintVisible) ++ this.queue_relayout(); ++ }); + } + + _childRemoved(grid, child) { + child.disconnect(child._iconGridKeyFocusInId); + delete child._iconGridKeyFocusInId; ++ ++ child.disconnect(child._opacityChangedId); ++ delete child._opacityChangedId; ++ delete child._paintVisible; + } + + vfunc_get_preferred_width(_forHeight) { +-- +2.23.0 + diff --git a/gnome-shell.spec b/gnome-shell.spec index 0fadb59..c90e738 100644 --- a/gnome-shell.spec +++ b/gnome-shell.spec @@ -1,6 +1,6 @@ Name: gnome-shell Version: 3.34.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Window management and application launching for GNOME License: GPLv2+ @@ -17,6 +17,9 @@ Patch1: gnome-shell-favourite-apps-firefox.patch Patch2: 0001-endSessionDialog-Immediately-add-buttons-to-the-dial.patch Patch3: 0002-endSessionDialog-Support-rebooting-into-the-bootload.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1753337 +Patch4: fix-disappearing-icons.patch + %define libcroco_version 0.6.8 %define eds_version 3.33.1 %define gnome_desktop_version 3.33.4 @@ -211,6 +214,9 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.de %{_mandir}/man1/gnome-shell.1* %changelog +* Fri Sep 20 2019 Florian Müllner - 3.34.0-2 +- Fix disappearing icons in frequent view + * Mon Sep 09 2019 Florian Müllner - 3.34.0-1 - Update to 3.34.0