diff options
author | Timm Bäder <mail@baedert.org> | 2019-02-19 08:51:51 +0100 |
---|---|---|
committer | Timm Bäder <mail@baedert.org> | 2019-02-19 08:57:06 +0100 |
commit | b94c8590b8e94ba328902974a600b8cd0a80a432 (patch) | |
tree | 2c06f09291d3bb47bd45659f34791da90fec647b | |
parent | 465b42099480245dc07678d377135088a0f2eb69 (diff) | |
download | gtk+-b94c8590b8e94ba328902974a600b8cd0a80a432.tar.gz |
widget: Compute child point directly when pickingwip/baedert/transforms7
-rw-r--r-- | gtk/gtkwidget.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 41f94004fd..d0ed2eda89 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -819,12 +819,18 @@ gtk_widget_real_pick (GtkWidget *widget, child; child = _gtk_widget_get_prev_sibling (child)) { + GtkWidgetPrivate *priv = gtk_widget_get_instance_private (child); + graphene_matrix_t inv; GtkWidget *picked; - double dx, dy; + graphene_vec4_t p; - gtk_widget_translate_coordinatesf (widget, child, x, y, &dx, &dy); + graphene_matrix_inverse (&priv->transform, &inv); + graphene_vec4_init (&p, x, y, 0, 1); + graphene_matrix_transform_vec4 (&inv, &p, &p); - picked = gtk_widget_pick (child, dx, dy); + picked = gtk_widget_pick (child, + graphene_vec4_get_x (&p), + graphene_vec4_get_y (&p)); if (picked) return picked; } |