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
|
Name: gnome-shell
|
||||||
Version: 3.34.0
|
Version: 3.34.0
|
||||||
Release: 1%{?dist}
|
Release: 2%{?dist}
|
||||||
Summary: Window management and application launching for GNOME
|
Summary: Window management and application launching for GNOME
|
||||||
|
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
@ -17,6 +17,9 @@ Patch1: gnome-shell-favourite-apps-firefox.patch
|
|||||||
Patch2: 0001-endSessionDialog-Immediately-add-buttons-to-the-dial.patch
|
Patch2: 0001-endSessionDialog-Immediately-add-buttons-to-the-dial.patch
|
||||||
Patch3: 0002-endSessionDialog-Support-rebooting-into-the-bootload.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 libcroco_version 0.6.8
|
||||||
%define eds_version 3.33.1
|
%define eds_version 3.33.1
|
||||||
%define gnome_desktop_version 3.33.4
|
%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*
|
%{_mandir}/man1/gnome-shell.1*
|
||||||
|
|
||||||
%changelog
|
%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
|
* Mon Sep 09 2019 Florian Müllner <fmuellner@redhat.com> - 3.34.0-1
|
||||||
- Update to 3.34.0
|
- Update to 3.34.0
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user