summaryrefslogtreecommitdiff
path: root/gtk/gtkwidgetfocus.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2019-03-02 12:52:56 -0500
committerMatthias Clasen <mclasen@redhat.com>2019-03-16 21:24:44 -0400
commit2738926dcba44c053e36ad1b454f9d55c7d28bc9 (patch)
tree04933194e80f6b9ee3682e90aa52c40c74da1f14 /gtk/gtkwidgetfocus.c
parent029ec38e63c41d13c20e763cfe3dae867f76ec13 (diff)
downloadgtk+-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.c21
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;
}