[gtk+/wip/baedert/drawing: 211/359] widget: Adapt translate_coordinates to coordinate changes
- From: Timm Bäder <baedert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/baedert/drawing: 211/359] widget: Adapt translate_coordinates to coordinate changes
- Date: Thu, 13 Jul 2017 14:45:31 +0000 (UTC)
commit 6e5e654f880331286725fa0b39d93e11eefb78c5
Author: Timm Bäder <mail baedert org>
Date: Tue May 30 16:20:01 2017 +0200
widget: Adapt translate_coordinates to coordinate changes
gtk/gtkwidget.c | 25 ++++++++++++++-----------
1 files changed, 14 insertions(+), 11 deletions(-)
---
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 47fb6d2..8e83055 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -6951,21 +6951,24 @@ static void
translate_coordinates (GdkEvent *event,
GtkWidget *widget)
{
- GtkWidget *event_widget;
- gdouble xd, yd;
- gint x, y;
+ double x, y;
- if (!gdk_event_get_coords (event, &xd, &yd))
+ if (!gdk_event_get_coords (event, &x, &y))
return;
- event_widget = gtk_get_event_widget (event);
- /* FIXME: loses precision */
- x = xd;
- y = yd;
- gtk_widget_translate_coordinates (event_widget, widget,
- x, y, &x, &y);
+ /* @event's coordinates are in toplevel coordinates, so we can simply
+ * walk up the hierarchy starting at @widget to translate the coordinates. */
+ while (widget)
+ {
+ GtkAllocation alloc;
+
+ _gtk_widget_get_allocation (widget, &alloc);
+ x -= alloc.x;
+ y -= alloc.y;
+
+ widget = _gtk_widget_get_parent (widget);
+ }
- /*g_message ("New coords for %p: %d/%d (widget %s)", event, x, y, G_OBJECT_TYPE_NAME (widget));*/
gdk_event_set_coords (event, x, y);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]