forked from AuroraMiddleware/gtk
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.
This commit is contained in:
parent
ca2c05cdb3
commit
c9d9f8b750
@ -3918,7 +3918,7 @@ gtk_flow_box_get_child_at_index (GtkFlowBox *box,
|
|||||||
* @y: the y coordinate of the child
|
* @y: the y coordinate of the child
|
||||||
*
|
*
|
||||||
* Gets the child in the (@x, @y) position. Both @x and @y are
|
* 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
|
* Returns: (transfer none) (nullable): the child widget, which will
|
||||||
* always be a #GtkFlowBoxChild or %NULL in case no child widget
|
* 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 x,
|
||||||
gint y)
|
gint y)
|
||||||
{
|
{
|
||||||
GtkWidget *child;
|
GtkWidget *child = gtk_widget_pick (GTK_WIDGET (box), x, y);
|
||||||
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;
|
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user