The grab interface handlers all expect pointer->current to identify
the surface under the pointer regardless of grabs etc. Thus, we need
to set it before calling the focus handler.
if (&surface->surface != seat->pointer->current) {
interface = seat->pointer->grab->interface;
+ seat->pointer->current = &surface->surface;
interface->focus(seat->pointer->grab, &surface->surface,
seat->pointer->current_x,
seat->pointer->current_y);
- seat->pointer->current = &surface->surface;
}
focus = (struct weston_surface *) seat->pointer->grab->focus;