[gtk/wip/baedert/transforms6: 49/52] flowbox: Implement get_child_at_pos properly
- From: Timm Bäder <baedert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/baedert/transforms6: 49/52] flowbox: Implement get_child_at_pos properly
- Date: Thu, 14 Feb 2019 07:11:53 +0000 (UTC)
commit c73e0709e48954607ca84770fbd0eb26dd6be795
Author: Timm Bäder <mail baedert org>
Date: Thu Feb 14 07:11:34 2019 +0100
flowbox: Implement get_child_at_pos properly
With transforms in the mix, checking if the coordinate is inside the
widget "allocation" makes even less sense. Just use gtk_widget_pick()
and walk up until we find a GtkFlowBoxChild.
gtk/gtkflowbox.c | 22 +++++-----------------
1 file changed, 5 insertions(+), 17 deletions(-)
---
diff --git a/gtk/gtkflowbox.c b/gtk/gtkflowbox.c
index f95d8734e1..65c491fe4b 100644
--- a/gtk/gtkflowbox.c
+++ b/gtk/gtkflowbox.c
@@ -3918,7 +3918,7 @@ gtk_flow_box_get_child_at_index (GtkFlowBox *box,
* @y: the y coordinate of the child
*
* Gets the child in the (@x, @y) position. Both @x and @y are
- * assumed to be relative to the allocation of @box.
+ * assumed to be relative to the origin of @box.
*
* Returns: (transfer none) (nullable): the child widget, which will
* always be a #GtkFlowBoxChild or %NULL in case no child widget
@@ -3929,24 +3929,12 @@ gtk_flow_box_get_child_at_pos (GtkFlowBox *box,
gint x,
gint y)
{
- GtkWidget *child;
- GSequenceIter *iter;
- GtkAllocation allocation;
-
- for (iter = g_sequence_get_begin_iter (BOX_PRIV (box)->children);
- !g_sequence_iter_is_end (iter);
- iter = g_sequence_iter_next (iter))
- {
- child = g_sequence_get (iter);
- if (!child_is_visible (child))
- continue;
+ GtkWidget *child = gtk_widget_pick (GTK_WIDGET (box), x, y);
- gtk_widget_get_allocation (child, &allocation);
- if (gdk_rectangle_contains_point (&allocation, x, y))
- return GTK_FLOW_BOX_CHILD (child);
- }
+ if (!child)
+ return NULL;
- return NULL;
+ return (GtkFlowBoxChild *)gtk_widget_get_ancestor (child, GTK_TYPE_FLOW_BOX_CHILD);
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]