[gtk/wip/matthiasc/popup: 9/63] Simplify the move_focus api



commit 4c6aad6457db6a53911848f12650a3ce5bdc6c48
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Mar 2 12:52:56 2019 -0500

    Simplify the move_focus api
    
    No need to pass the array in from the outside.

 gtk/gtkwidget.c        | 13 ++-----------
 gtk/gtkwidgetfocus.c   | 21 ++++++++++++---------
 gtk/gtkwidgetprivate.h |  3 +--
 3 files changed, 15 insertions(+), 22 deletions(-)
---
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 291c0c66fb..bdb3af4c3f 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -5454,17 +5454,8 @@ gtk_widget_real_focus (GtkWidget         *widget,
     }
   else
     {
-      GPtrArray *focus_order = g_ptr_array_new ();
-      gboolean ret = FALSE;
-
-      /* Try focusing any of the child widgets, depending on the given @direction */
-
-      gtk_widget_focus_sort (widget, direction, focus_order);
-      ret = gtk_widget_focus_move (widget, direction, focus_order);
-
-      g_ptr_array_unref (focus_order);
-
-      if (ret)
+      /* Try focusing any of the child widgets, depending on the given direction */
+      if (gtk_widget_focus_move (widget, direction))
         return TRUE;
     }
 
diff --git a/gtk/gtkwidgetfocus.c b/gtk/gtkwidgetfocus.c
index b1abae3894..c29adfdbe0 100644
--- a/gtk/gtkwidgetfocus.c
+++ b/gtk/gtkwidgetfocus.c
@@ -450,13 +450,17 @@ gtk_widget_focus_sort (GtkWidget        *widget,
 
 gboolean
 gtk_widget_focus_move (GtkWidget        *widget,
-                       GtkDirectionType  direction,
-                       GPtrArray        *focus_order)
+                       GtkDirectionType  direction)
 {
+  GPtrArray *focus_order;
   GtkWidget *focus_child = gtk_widget_get_focus_child (widget);
   int i;
+  gboolean ret = FALSE;
+
+  focus_order = g_ptr_array_new ();
+  gtk_widget_focus_sort (widget, direction, focus_order);
 
-  for (i = 0; i < focus_order->len; i ++)
+  for (i = 0; i < focus_order->len && !ret; i++)
     {
       GtkWidget *child = g_ptr_array_index (focus_order, i);
 
@@ -465,18 +469,17 @@ gtk_widget_focus_move (GtkWidget        *widget,
           if (focus_child == child)
             {
               focus_child = NULL;
-
-                if (gtk_widget_child_focus (child, direction))
-                  return TRUE;
+              ret = gtk_widget_child_focus (child, direction);
             }
         }
       else if (_gtk_widget_is_drawable (child) &&
                gtk_widget_is_ancestor (child, widget))
         {
-          if (gtk_widget_child_focus (child, direction))
-            return TRUE;
+          ret = gtk_widget_child_focus (child, direction);
         }
     }
 
-  return FALSE;
+  g_ptr_array_unref (focus_order);
+
+  return ret;
 }
diff --git a/gtk/gtkwidgetprivate.h b/gtk/gtkwidgetprivate.h
index 49c4d19de0..6510565ddb 100644
--- a/gtk/gtkwidgetprivate.h
+++ b/gtk/gtkwidgetprivate.h
@@ -318,8 +318,7 @@ void              gtk_widget_focus_sort                    (GtkWidget        *wi
                                                             GtkDirectionType  direction,
                                                             GPtrArray        *focus_order);
 gboolean          gtk_widget_focus_move                    (GtkWidget        *widget,
-                                                            GtkDirectionType  direction,
-                                                            GPtrArray        *focus_order);
+                                                            GtkDirectionType  direction);
 void              gtk_widget_get_surface_allocation         (GtkWidget *widget,
                                                             GtkAllocation *allocation);
 


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