Fix disappearing icons in frequent view
https://bugzilla.redhat.com/show_bug.cgi?id=1753337
This commit is contained in:
parent
a8b84f2dd6
commit
c5384ff8e4
90
fix-disappearing-icons.patch
Normal file
90
fix-disappearing-icons.patch
Normal file
@ -0,0 +1,90 @@
|
||||
From 4915a9e8e404555379aa8807ad8c53c7589f2ae7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= <verdre@v0yd.nl>
|
||||
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?= <verdre@v0yd.nl>
|
||||
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
|
||||
|
@ -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 <fmuellner@redhat.com> - 3.34.0-2
|
||||
- Fix disappearing icons in frequent view
|
||||
|
||||
* Mon Sep 09 2019 Florian Müllner <fmuellner@redhat.com> - 3.34.0-1
|
||||
- Update to 3.34.0
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user