File gnome-shell-774381-app-window-overlay-app-list.patch of Package gnome-shell

From 13a9c5aa5fb26ccadde5d39d6a1d868b5bf66fe1 Mon Sep 17 00:00:00 2001
From: Xiaoguang Wang <xwang@suse.com>
Date: Thu, 24 Nov 2016 09:22:16 +0800
Subject: [PATCH] appDisplay: Use correct view for animation

We currently assume that the current view matches the 'app-picker-view'
setting. While that is usually the case, there is one notable exception:
While there isn't sufficient usage data (yet), we show all applications
instead of an empty frequent view regardless of the setting. We should
animate the actually visible icons in that case, not the (non-existent)
ones from the hidden frequent view.

[PATCH] appDisplay: Fix completion handler for empty animations

If an onComplete handler is passed to animate(), it is set to run at
the end of the animation via the icon grid's ::animation-done signal.
Currently the signal is connected after starting the animation, with
the result that the handler doesn't run when the animation completes
immediately (because there are no icons to animate). Fix this by only
starting the animation after connecting the signal.

https://bugzilla.gnome.org/show_bug.cgi?id=774381
---
 js/ui/appDisplay.js | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 58adf3a..337bcc4 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -198,6 +198,14 @@ const BaseAppView = new Lang.Class({
     },

     animate: function(animationDirection, onComplete) {
+        if (onComplete) {
+            let animationDoneId = this._grid.connect('animation-done', Lang.bind(this,
+                function () {
+                    this._grid.disconnect(animationDoneId);
+                    onComplete();
+            }));
+        }
+
         if (animationDirection == IconGrid.AnimationDirection.IN) {
             let toAnimate = this._grid.actor.connect('notify::allocation', Lang.bind(this,
                 function() {
@@ -213,14 +221,6 @@ const BaseAppView = new Lang.Class({
         } else {
             this._doSpringAnimation(animationDirection);
         }
-
-        if (onComplete) {
-            let animationDoneId = this._grid.connect('animation-done', Lang.bind(this,
-                function () {
-                    this._grid.disconnect(animationDoneId);
-                    onComplete();
-            }));
-        }
     },

     animateSwitch: function(animationDirection) {
@@ -972,7 +972,7 @@ const AppDisplay = new Lang.Class({
     },

     animate: function(animationDirection, onComplete) {
-        let currentView = this._views[global.settings.get_uint('app-picker-view')].view;
+        let currentView = this._views.filter(v => v.control.has_style_pseudo_class('checked')).pop().view;

         // Animate controls opacity using iconGrid animation time, since
         // it will be the time the AllView or FrequentView takes to show
--
2.10.0

openSUSE Build Service is sponsored by