[qwaq] Move mouse event offsetting to Window

This way, Group doesn't need to query its owner's position.
This commit is contained in:
Bill Currie 2020-03-23 23:59:54 +09:00
parent 8707ac0d57
commit 30519e93fb
2 changed files with 6 additions and 10 deletions

View file

@ -127,17 +127,11 @@ find_mouse_view(Group *group, Point pos)
[[views objectAtIndex:focused] handleEvent: event];
}
} else if (event.what & qe_positional) {
Point origin = {};
if (owner) {
origin = [owner origin];
}
event.mouse.x -= origin.x;
event.mouse.y -= origin.y;
Point pos = {event.mouse.x, event.mouse.y};
if (mouse_grabbed) {
[mouse_grabbed handleEvent: event];
} else {
View *mouse_view = find_mouse_view (self, pos);
Point pos = {event.mouse.x, event.mouse.y};
View *mouse_view = find_mouse_view (self, pos);
if (mouse_within != mouse_view) {
[mouse_within onMouseLeave: pos];
[mouse_view onMouseEnter: pos];
@ -147,8 +141,6 @@ find_mouse_view(Group *group, Point pos)
[mouse_within handleEvent: event];
}
}
event.mouse.x += origin.x;
event.mouse.y += origin.y;
} else {
// broadcast
[views makeObjectsPerformSelector: @selector(draw) withObject: event];

View file

@ -154,7 +154,11 @@
-handleEvent: (qwaq_event_t *) event
{
event.mouse.x -= xpos;
event.mouse.y -= ypos;
[objects handleEvent: event];
event.mouse.x += xpos;
event.mouse.y += ypos;
return self;
}