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