diff options
author | Matthias Clasen <mclasen@redhat.com> | 2019-03-02 12:52:56 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2019-03-16 21:24:44 -0400 |
commit | 2738926dcba44c053e36ad1b454f9d55c7d28bc9 (patch) | |
tree | 04933194e80f6b9ee3682e90aa52c40c74da1f14 /gtk/gtkwidgetfocus.c | |
parent | 029ec38e63c41d13c20e763cfe3dae867f76ec13 (diff) | |
download | gtk+-2738926dcba44c053e36ad1b454f9d55c7d28bc9.tar.gz |
Simplify the move_focus api
No need to pass the array in from the outside.
Diffstat (limited to 'gtk/gtkwidgetfocus.c')
-rw-r--r-- | gtk/gtkwidgetfocus.c | 21 |
1 files changed, 12 insertions, 9 deletions
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; } |