From a74f8659179c7d305e9449bf060f5432dbd5cff0 Mon Sep 17 00:00:00 2001
From: Cedric Roux <cedric.roux@eurecom.fr>
Date: Wed, 4 May 2016 17:13:38 +0200
Subject: [PATCH] more logical handling of x/y in button events

click at x/y refers to the toplevel window and the widget knows
its own x/y position, so let's keep the x/y of the click as is
and let the down widget handle translation by itself

something like that
---
 common/utils/T/tracer/gui/container.c | 4 ++--
 common/utils/T/tracer/gui/textlist.c  | 2 ++
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/common/utils/T/tracer/gui/container.c b/common/utils/T/tracer/gui/container.c
index 344f864382..d3ce2a110b 100644
--- a/common/utils/T/tracer/gui/container.c
+++ b/common/utils/T/tracer/gui/container.c
@@ -237,7 +237,7 @@ static void horizontal_button(gui *_g, widget *_this, int x, int y,
   l = this->common.children;
   while (l) {
     if (l->item->x <= x && x < l->item->x + l->item->width) {
-      l->item->button(g, l->item, x - l->item->x, y, button, up);
+      l->item->button(g, l->item, x, y, button, up);
       break;
     }
     l = l->next;
@@ -255,7 +255,7 @@ static void vertical_button(gui *_g, widget *_this, int x, int y,
   l = this->common.children;
   while (l) {
     if (l->item->y <= y && y < l->item->y + l->item->height) {
-      l->item->button(g, l->item, x, y - l->item->y, button, up);
+      l->item->button(g, l->item, x, y, button, up);
       break;
     }
     l = l->next;
diff --git a/common/utils/T/tracer/gui/textlist.c b/common/utils/T/tracer/gui/textlist.c
index 9244b8c9bf..50a21cd459 100644
--- a/common/utils/T/tracer/gui/textlist.c
+++ b/common/utils/T/tracer/gui/textlist.c
@@ -49,6 +49,8 @@ static void button(gui *_g, widget *_this, int x, int y, int button, int up)
   struct gui *g = _g;
   struct textlist_widget *this = _this;
   LOGD("BUTTON textlist %p xy %d %d button %d up %d\n", _this, x, y, button, up);
+  y -= this->common.y;
+  x -= this->common.x;
   /* scroll up */
   if (button == 4 && up == 0) {
     gui_notify(g, "scrollup", _this, NULL);
-- 
GitLab