summaryrefslogtreecommitdiff
path: root/gtk/gtkwindow.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2017-11-05 00:49:18 +0100
committerBenjamin Otte <otte@redhat.com>2017-11-05 05:13:17 +0100
commitcf2d549e922b51e7c4c790c04531be0cfb6ddd63 (patch)
tree3d0b78e35cb5816563eac6fd20e28fce7a228392 /gtk/gtkwindow.c
parent65a7557fc13511665138132d1d25aa593b65e433 (diff)
downloadgtk+-cf2d549e922b51e7c4c790c04531be0cfb6ddd63.tar.gz
widget: Implement gtk_widget_pick()
... and use it.
Diffstat (limited to 'gtk/gtkwindow.c')
-rw-r--r--gtk/gtkwindow.c36
1 files changed, 10 insertions, 26 deletions
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index ed60d5cf05..6a806357b0 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -742,9 +742,7 @@ static void popover_get_rect (GtkWindowPopover *popover,
static GtkWidget *
gtk_window_pick (GtkWidget *widget,
gdouble x,
- gdouble y,
- gdouble *x_out,
- gdouble *y_out)
+ gdouble y)
{
GtkWindow *window = GTK_WINDOW (widget);
GList *popovers;
@@ -752,33 +750,19 @@ gtk_window_pick (GtkWidget *widget,
for (popovers = window->priv->popovers.tail; popovers; popovers = popovers->prev)
{
GtkWindowPopover *popover = popovers->data;
- cairo_rectangle_int_t rect;
-
- if (!gtk_widget_is_sensitive (popover->widget) ||
- !gtk_widget_is_drawable (popover->widget))
- continue;
+ int dest_x, dest_y;
+ GtkWidget *picked;
- gtk_widget_get_outer_allocation (popover->widget, &rect);
+ gtk_widget_translate_coordinates (widget, popover->widget,
+ x, y,
+ &dest_x, &dest_y);
- if (gdk_rectangle_contains_point (&rect, x, y))
- {
- if (x_out && y_out)
- {
- int dest_x, dest_y;
- gtk_widget_translate_coordinates (widget, popover->widget,
- x, y,
- &dest_x, &dest_y);
-
- *x_out = dest_x;
- *y_out = dest_y;
- }
-
- return popover->widget;
- }
+ picked = gtk_widget_pick (popover->widget, dest_x, dest_y);
+ if (picked)
+ return picked;
}
- return GTK_WIDGET_CLASS (gtk_window_parent_class)->pick (widget, x, y,
- x_out, y_out);
+ return GTK_WIDGET_CLASS (gtk_window_parent_class)->pick (widget, x, y);
}
static void