X-Git-Url: http://git.mutantstargoat.com?a=blobdiff_plain;f=src%2Ffbdev%2Fmouse.cc;h=61c5406518124488153e53bbe2c0de60dc40d7fa;hb=52044efd7717f4b02bd463c9a26f83c9a41953ea;hp=5fd080bc6b5047674bb75b60821500a12d88e3b2;hpb=6dc42c0e7292d6d94de640ddd7de3ee5c808e9c2;p=winnie diff --git a/src/fbdev/mouse.cc b/src/fbdev/mouse.cc index 5fd080b..61c5406 100644 --- a/src/fbdev/mouse.cc +++ b/src/fbdev/mouse.cc @@ -71,12 +71,15 @@ void process_mouse_event() return; } - 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); + } } /* - send each pointer move and button press/release to the topmost window @@ -101,7 +104,8 @@ void process_mouse_event() int s = (bnstate >> i) & 1; int prev_s = (prev_state >> i) & 1; if(s != prev_s) { - button_callback(top, i, s); + Rect rect = top->get_absolute_rect(); + button_callback(top, i, s, pointer_x - rect.x, pointer_y - rect.y); } } }