[gtk/wip/matthiasc/focus2: 9/33] Simplify the move_focus api
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/matthiasc/focus2: 9/33] Simplify the move_focus api
- Date: Sun, 3 Mar 2019 20:35:33 +0000 (UTC)
commit 9f74095b481d2bb25029a9125c66e2c3b457d958
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]