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
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user