diff options
author | Benjamin Otte <otte@redhat.com> | 2017-11-05 00:49:18 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2017-11-05 05:13:17 +0100 |
commit | cf2d549e922b51e7c4c790c04531be0cfb6ddd63 (patch) | |
tree | 3d0b78e35cb5816563eac6fd20e28fce7a228392 /gtk/gtkwindow.c | |
parent | 65a7557fc13511665138132d1d25aa593b65e433 (diff) | |
download | gtk+-cf2d549e922b51e7c4c790c04531be0cfb6ddd63.tar.gz |
widget: Implement gtk_widget_pick()
... and use it.
Diffstat (limited to 'gtk/gtkwindow.c')
-rw-r--r-- | gtk/gtkwindow.c | 36 |
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 |