[gnome-shell] widget: Only include visible actors in focus chain



commit a870a4d6de093e469d50dcbba81c4636f053c481
Author: Florian Müllner <fmuellner gnome org>
Date:   Tue Feb 7 20:22:18 2017 +0100

    widget: Only include visible actors in focus chain
    
    It isn't useful to move the keyboard focus to a hidden actor, so
    only include visible actors in the focus chain - this is in fact
    the documented behavior of st_widget_get_focus_chain(), so having
    the default implementation return all children has always been
    unexpected.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=778158

 src/st/st-widget.c |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)
---
diff --git a/src/st/st-widget.c b/src/st/st-widget.c
index e20c845..002249d 100644
--- a/src/st/st-widget.c
+++ b/src/st/st-widget.c
@@ -821,7 +821,19 @@ st_widget_get_paint_volume (ClutterActor *self,
 static GList *
 st_widget_real_get_focus_chain (StWidget *widget)
 {
-  return clutter_actor_get_children (CLUTTER_ACTOR (widget));
+  GList *children, *l, *visible = NULL;
+
+  children = clutter_actor_get_children (CLUTTER_ACTOR (widget));
+
+  for (l = children; l; l = l->next)
+    {
+      if (clutter_actor_is_visible (CLUTTER_ACTOR (l->data)))
+        visible = g_list_prepend (visible, l->data);
+    }
+
+  g_list_free (children);
+
+  return g_list_reverse (visible);
 }
 
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]