(struct wlsc_surface *) device->input_device.pointer_focus;
device->grab = grab;
- device->grab_surface = focus;
device->grab_button = button;
device->grab_time = time;
device->grab_x = device->x;
return -1;
device->grab = grab;
- wl_input_device_set_pointer_focus(&device->input_device,
- &wl_grab_surface, time, 0, 0, 0, 0);
return 0;
}
break;
case WLSC_DEVICE_GRAB_MOVE:
- es = device->grab_surface;
+ es = (struct wlsc_surface *) device->input_device.pointer_focus;
es->x = x + device->grab_dx;
es->y = y + device->grab_dy;;
wl_client_post_event(es->surface.client,
case WLSC_DEVICE_GRAB_RESIZE_TOP_RIGHT:
case WLSC_DEVICE_GRAB_RESIZE_BOTTOM_RIGHT:
case WLSC_DEVICE_GRAB_RESIZE_MASK:
- es = device->grab_surface;
-
+ es = (struct wlsc_surface *) device->input_device.pointer_focus;
if (device->grab & WLSC_DEVICE_GRAB_RESIZE_LEFT) {
sx = x + device->grab_dx;
width = device->grab_x - x + device->grab_width;
if (device->input_device.pointer_focus == NULL)
return;
- if (device->input_device.pointer_focus->client != client &&
- !(device->input_device.pointer_focus == &wl_grab_surface &&
- device->grab_surface->surface.client == client))
+ if (device->input_device.pointer_focus->client != client)
return;
if (buffer == NULL) {
struct wl_list link;
};
-WL_EXPORT struct wl_surface wl_grab_surface = {
- {},
- NULL,
- {
- &wl_grab_surface.destroy_listener_list,
- &wl_grab_surface.destroy_listener_list
- }
-};
-
static int wl_debug = 0;
WL_EXPORT void
struct wl_closure *closure;
va_list ap;
- if (client == NULL)
- /* wl_grab_surface case */
- return;
-
va_start(ap, opcode);
closure = wl_connection_vmarshal(client->connection,
sender, opcode, ap,
WL_EVENT_WRITEABLE = 0x02
};
-/* FIXME: We really want in-process objects here, so that the
- * compositor grabs can be implemented as passive grabs and the events
- * be delivered to an in-process listener. For now, we use this
- * special case as the grabbing surface. */
-extern struct wl_surface wl_grab_surface;
-
struct wl_event_loop;
struct wl_event_source;
typedef void (*wl_event_loop_fd_func_t)(int fd, uint32_t mask, void *data);