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
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);
}
}
}