struct wlsc_binding *b;
struct wlsc_surface *surface =
(struct wlsc_surface *) device->pointer_focus;
+ int32_t sx, sy;
if (state)
wlsc_compositor_idle_inhibit(compositor);
device->grab->interface->button(device->grab, time,
button, state);
- if (!state && device->grab && device->grab_button == button)
+ if (!state && device->grab && device->grab_button == button) {
wl_input_device_end_grab(device, time);
+ surface = pick_surface(device, &sx, &sy);
+ wl_input_device_set_pointer_focus(device, &surface->surface,
+ time, device->x, device->y,
+ sx, sy);
+ }
}
static void
static void
move_grab_end(struct wl_grab *grab, uint32_t time)
{
- struct wlsc_surface *es;
- struct wl_input_device *device = grab->input_device;
- int32_t sx, sy;
-
- es = pick_surface(grab->input_device, &sx, &sy);
- wl_input_device_set_pointer_focus(device,
- &es->surface, time,
- device->x, device->y, sx, sy);
free(grab);
}
static void
resize_grab_end(struct wl_grab *grab, uint32_t time)
{
- struct wlsc_surface *es;
- struct wl_input_device *device = grab->input_device;
- int32_t sx, sy;
-
- es = pick_surface(grab->input_device, &sx, &sy);
- wl_input_device_set_pointer_focus(device,
- &es->surface, time,
- device->x, device->y, sx, sy);
free(grab);
}
drag_grab_end(struct wl_grab *grab, uint32_t time)
{
struct wl_drag *drag = container_of(grab, struct wl_drag, grab);
- struct wlsc_surface *es;
- struct wl_input_device *device = grab->input_device;
- int32_t sx, sy;
if (drag->target)
wl_resource_post_event(&drag->drag_offer.resource,
WL_DRAG_OFFER_DROP);
wl_drag_set_pointer_focus(drag, NULL, time, 0, 0, 0, 0);
-
- es = pick_surface(grab->input_device, &sx, &sy);
- wl_input_device_set_pointer_focus(device,
- &es->surface, time,
- device->x, device->y, sx, sy);
}
static const struct wl_grab_interface drag_grab_interface = {