[gtk+/wip/baedert/drawing: 216/348] 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: 216/348] widget: Adapt	translate_coordinates to coordinate changes
 
- Date: Sat,  8 Jul 2017 10:48:58 +0000 (UTC)
 
commit 5eb2ac1c44f8b3bf22ffd94501f2471930f5d737
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]