Drop dummy wl_grab_surface hack

dev
Kristian Høgsberg 15 years ago
parent 855ab75787
commit 4be2ed9611
  1. 12
      compositor/compositor.c
  2. 1
      compositor/compositor.h
  3. 13
      wayland/wayland-server.c
  4. 6
      wayland/wayland-server.h

@ -516,7 +516,6 @@ wlsc_input_device_start_grab(struct wlsc_input_device *device,
(struct wlsc_surface *) device->input_device.pointer_focus; (struct wlsc_surface *) device->input_device.pointer_focus;
device->grab = grab; device->grab = grab;
device->grab_surface = focus;
device->grab_button = button; device->grab_button = button;
device->grab_time = time; device->grab_time = time;
device->grab_x = device->x; device->grab_x = device->x;
@ -542,8 +541,6 @@ wlsc_input_device_update_grab(struct wlsc_input_device *device,
return -1; return -1;
device->grab = grab; device->grab = grab;
wl_input_device_set_pointer_focus(&device->input_device,
&wl_grab_surface, time, 0, 0, 0, 0);
return 0; return 0;
} }
@ -769,7 +766,7 @@ notify_motion(struct wlsc_input_device *device, uint32_t time, int x, int y)
break; break;
case WLSC_DEVICE_GRAB_MOVE: 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->x = x + device->grab_dx;
es->y = y + device->grab_dy;; es->y = y + device->grab_dy;;
wl_client_post_event(es->surface.client, wl_client_post_event(es->surface.client,
@ -792,8 +789,7 @@ notify_motion(struct wlsc_input_device *device, uint32_t time, int x, int y)
case WLSC_DEVICE_GRAB_RESIZE_TOP_RIGHT: case WLSC_DEVICE_GRAB_RESIZE_TOP_RIGHT:
case WLSC_DEVICE_GRAB_RESIZE_BOTTOM_RIGHT: case WLSC_DEVICE_GRAB_RESIZE_BOTTOM_RIGHT:
case WLSC_DEVICE_GRAB_RESIZE_MASK: 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) { if (device->grab & WLSC_DEVICE_GRAB_RESIZE_LEFT) {
sx = x + device->grab_dx; sx = x + device->grab_dx;
width = device->grab_x - x + device->grab_width; width = device->grab_x - x + device->grab_width;
@ -993,9 +989,7 @@ input_device_attach(struct wl_client *client,
if (device->input_device.pointer_focus == NULL) if (device->input_device.pointer_focus == NULL)
return; return;
if (device->input_device.pointer_focus->client != client && if (device->input_device.pointer_focus->client != client)
!(device->input_device.pointer_focus == &wl_grab_surface &&
device->grab_surface->surface.client == client))
return; return;
if (buffer == NULL) { if (buffer == NULL) {

@ -92,7 +92,6 @@ struct wlsc_input_device {
uint32_t modifier_state; uint32_t modifier_state;
enum wlsc_grab_type grab; enum wlsc_grab_type grab;
struct wlsc_surface *grab_surface;
uint32_t grab_time; uint32_t grab_time;
int32_t grab_x, grab_y; int32_t grab_x, grab_y;
int32_t grab_width, grab_height; int32_t grab_width, grab_height;

@ -80,15 +80,6 @@ struct wl_global {
struct wl_list link; 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; static int wl_debug = 0;
WL_EXPORT void WL_EXPORT void
@ -98,10 +89,6 @@ wl_client_post_event(struct wl_client *client, struct wl_object *sender,
struct wl_closure *closure; struct wl_closure *closure;
va_list ap; va_list ap;
if (client == NULL)
/* wl_grab_surface case */
return;
va_start(ap, opcode); va_start(ap, opcode);
closure = wl_connection_vmarshal(client->connection, closure = wl_connection_vmarshal(client->connection,
sender, opcode, ap, sender, opcode, ap,

@ -36,12 +36,6 @@ enum {
WL_EVENT_WRITEABLE = 0x02 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_loop;
struct wl_event_source; struct wl_event_source;
typedef void (*wl_event_loop_fd_func_t)(int fd, uint32_t mask, void *data); typedef void (*wl_event_loop_fd_func_t)(int fd, uint32_t mask, void *data);

Loading…
Cancel
Save