X-Git-Url: http://git.mutantstargoat.com?p=winnie;a=blobdiff_plain;f=src%2Fsdl%2Fmouse.cc;h=51cceb37a1966392c5f42b4d0ba07e1d0829825b;hp=55317079fead0e7ee27de42354c5c6cfe8d7d1fb;hb=287b4d5d1b7eadfe9d5d0aa3b33700f3e1bed55e;hpb=6dc42c0e7292d6d94de640ddd7de3ee5c808e9c2 diff --git a/src/sdl/mouse.cc b/src/sdl/mouse.cc index 5531707..51cceb3 100644 --- a/src/sdl/mouse.cc +++ b/src/sdl/mouse.cc @@ -34,13 +34,15 @@ void process_mouse_event() MouseMotionFuncType motion_callback = 0; MouseButtonFuncType button_callback = 0; - Window *top = wm->get_window_at_pos(pointer_x, pointer_y); - - if(top) { - wm->set_focused_window(top); - } - else { - wm->set_focused_window(0); + Window *top; + if(!(top = wm->get_grab_window())) { + top = wm->get_window_at_pos(pointer_x, pointer_y); + if(top) { + wm->set_focused_window(top); + } + else { + wm->set_focused_window(0); + } } switch(sdl_event.type) { @@ -63,7 +65,8 @@ void process_mouse_event() bnstate &= ~(1 << bn); } if(top && (button_callback = top->get_mouse_button_callback())) { - button_callback(top, bn, sdl_event.button.state); + Rect rect = top->get_absolute_rect(); + button_callback(top, bn, sdl_event.button.state, pointer_x - rect.x, pointer_y - rect.y); } } }