[PATCH 1/2] Track server changes.

Scott Moreau oreaus at gmail.com
Fri Feb 17 09:00:52 PST 2012


---
 src/compositor.c |   20 +++++++++---------
 src/shell.c      |   60 ++++++++++++++++++++++++++++-------------------------
 2 files changed, 42 insertions(+), 38 deletions(-)

diff --git a/src/compositor.c b/src/compositor.c
index ab90ded..b4e9749 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -559,7 +559,7 @@ static void
 weston_device_repick(struct wl_input_device *device, uint32_t time)
 {
 	struct weston_input_device *wd = (struct weston_input_device *) device;
-	const struct wl_grab_interface *interface;
+	const struct wl_pointer_grab_interface *interface;
 	struct weston_surface *surface, *focus;
 
 	surface = weston_compositor_pick_surface(wd->compositor,
@@ -568,16 +568,16 @@ weston_device_repick(struct wl_input_device *device, uint32_t time)
 						 &device->current_y);
 
 	if (&surface->surface != device->current) {
-		interface = device->grab->interface;
-		interface->focus(device->grab, time, &surface->surface,
+		interface = device->pointer_grab->interface;
+		interface->focus(device->pointer_grab, time, &surface->surface,
 				 device->current_x, device->current_y);
 		device->current = &surface->surface;
 	}
 
-	focus = (struct weston_surface *) device->grab->focus;
+	focus = (struct weston_surface *) device->pointer_grab->focus;
 	if (focus)
 		weston_surface_from_global(focus, device->x, device->y,
-					   &device->grab->x, &device->grab->y);
+					   &device->pointer_grab->x, &device->pointer_grab->y);
 }
 
 WL_EXPORT void
@@ -1324,7 +1324,7 @@ WL_EXPORT void
 notify_motion(struct wl_input_device *device, uint32_t time, int x, int y)
 {
 	struct weston_output *output;
-	const struct wl_grab_interface *interface;
+	const struct wl_pointer_grab_interface *interface;
 	struct weston_input_device *wd = (struct weston_input_device *) device;
 	struct weston_compositor *ec = wd->compositor;
 	int x_valid = 0, y_valid = 0;
@@ -1368,9 +1368,9 @@ notify_motion(struct wl_input_device *device, uint32_t time, int x, int y)
 	device->y = y;
 
 	weston_device_repick(device, time);
-	interface = device->grab->interface;
-	interface->motion(device->grab, time,
-			  device->grab->x, device->grab->y);
+	interface = device->pointer_grab->interface;
+	interface->motion(device->pointer_grab, time,
+			  device->pointer_grab->x, device->pointer_grab->y);
 
 	if (wd->sprite) {
 		weston_surface_set_position(wd->sprite,
@@ -1414,7 +1414,7 @@ notify_button(struct wl_input_device *device,
 
 	weston_compositor_run_binding(compositor, wd, time, 0, button, state);
 
-	device->grab->interface->button(device->grab, time, button, state);
+	device->pointer_grab->interface->button(device->pointer_grab, time, button, state);
 
 }
 
diff --git a/src/shell.c b/src/shell.c
index 66c4f01..51dfc7d 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -100,7 +100,7 @@ struct shell_surface {
 	} rotation;
 
 	struct {
-		struct wl_grab grab;
+		struct wl_pointer_grab grab;
 		uint32_t time;
 		int32_t x, y;
 		struct weston_transform parent_transform;
@@ -112,13 +112,17 @@ struct shell_surface {
 };
 
 struct weston_move_grab {
-	struct wl_grab grab;
+	struct wl_pointer_grab grab;
 	struct weston_surface *surface;
 	int32_t dx, dy;
 };
 
+struct weston_zoom_grab {
+	struct wl_keyboard_grab grab;
+};
+
 struct rotate_grab {
-	struct wl_grab grab;
+	struct wl_pointer_grab grab;
 	struct shell_surface *surface;
 	struct weston_matrix rotation;
 	struct {
@@ -152,14 +156,14 @@ shell_configuration(struct wl_shell *shell)
 }
 
 static void
-noop_grab_focus(struct wl_grab *grab, uint32_t time,
+noop_grab_focus(struct wl_pointer_grab *grab, uint32_t time,
 		struct wl_surface *surface, int32_t x, int32_t y)
 {
 	grab->focus = NULL;
 }
 
 static void
-move_grab_motion(struct wl_grab *grab,
+move_grab_motion(struct wl_pointer_grab *grab,
 		 uint32_t time, int32_t x, int32_t y)
 {
 	struct weston_move_grab *move = (struct weston_move_grab *) grab;
@@ -173,18 +177,18 @@ move_grab_motion(struct wl_grab *grab,
 }
 
 static void
-move_grab_button(struct wl_grab *grab,
+move_grab_button(struct wl_pointer_grab *grab,
 		 uint32_t time, int32_t button, int32_t state)
 {
 	struct wl_input_device *device = grab->input_device;
 
 	if (device->button_count == 0 && state == 0) {
-		wl_input_device_end_grab(device, time);
+		wl_input_device_end_pointer_grab(device, time);
 		free(grab);
 	}
 }
 
-static const struct wl_grab_interface move_grab_interface = {
+static const struct wl_pointer_grab_interface move_grab_interface = {
 	noop_grab_focus,
 	move_grab_motion,
 	move_grab_button,
@@ -205,7 +209,7 @@ weston_surface_move(struct weston_surface *es,
 	move->dy = es->geometry.y - wd->input_device.grab_y;
 	move->surface = es;
 
-	wl_input_device_start_grab(&wd->input_device, &move->grab, time);
+	wl_input_device_start_pointer_grab(&wd->input_device, &move->grab, time);
 
 	wl_input_device_set_pointer_focus(&wd->input_device,
 					  NULL, time, 0, 0, 0, 0);
@@ -230,14 +234,14 @@ shell_surface_move(struct wl_client *client, struct wl_resource *resource,
 }
 
 struct weston_resize_grab {
-	struct wl_grab grab;
+	struct wl_pointer_grab grab;
 	uint32_t edges;
 	int32_t width, height;
 	struct shell_surface *shsurf;
 };
 
 static void
-resize_grab_motion(struct wl_grab *grab,
+resize_grab_motion(struct wl_pointer_grab *grab,
 		   uint32_t time, int32_t x, int32_t y)
 {
 	struct weston_resize_grab *resize = (struct weston_resize_grab *) grab;
@@ -274,18 +278,18 @@ resize_grab_motion(struct wl_grab *grab,
 }
 
 static void
-resize_grab_button(struct wl_grab *grab,
+resize_grab_button(struct wl_pointer_grab *grab,
 		   uint32_t time, int32_t button, int32_t state)
 {
 	struct wl_input_device *device = grab->input_device;
 
 	if (device->button_count == 0 && state == 0) {
-		wl_input_device_end_grab(device, time);
+		wl_input_device_end_pointer_grab(device, time);
 		free(grab);
 	}
 }
 
-static const struct wl_grab_interface resize_grab_interface = {
+static const struct wl_pointer_grab_interface resize_grab_interface = {
 	noop_grab_focus,
 	resize_grab_motion,
 	resize_grab_button,
@@ -314,7 +318,7 @@ weston_surface_resize(struct shell_surface *shsurf,
 	resize->height = shsurf->surface->geometry.height;
 	resize->shsurf = shsurf;
 
-	wl_input_device_start_grab(&wd->input_device, &resize->grab, time);
+	wl_input_device_start_pointer_grab(&wd->input_device, &resize->grab, time);
 
 	wl_input_device_set_pointer_focus(&wd->input_device,
 					  NULL, time, 0, 0, 0, 0);
@@ -442,7 +446,7 @@ shell_surface_set_fullscreen(struct wl_client *client,
 }
 
 static void
-popup_grab_focus(struct wl_grab *grab, uint32_t time,
+popup_grab_focus(struct wl_pointer_grab *grab, uint32_t time,
 		 struct wl_surface *surface, int32_t x, int32_t y)
 {
 	struct wl_input_device *device = grab->input_device;
@@ -462,7 +466,7 @@ popup_grab_focus(struct wl_grab *grab, uint32_t time,
 }
 
 static void
-popup_grab_motion(struct wl_grab *grab,
+popup_grab_motion(struct wl_pointer_grab *grab,
 		  uint32_t time, int32_t x, int32_t y)
 {
 	struct wl_input_device *device = grab->input_device;
@@ -475,7 +479,7 @@ popup_grab_motion(struct wl_grab *grab,
 }
 
 static void
-popup_grab_button(struct wl_grab *grab,
+popup_grab_button(struct wl_pointer_grab *grab,
 		  uint32_t time, int32_t button, int32_t state)
 {
 	struct wl_resource *resource;
@@ -491,7 +495,7 @@ popup_grab_button(struct wl_grab *grab,
 		    time - shsurf->popup.time > 500)) {
 		wl_resource_post_event(&shsurf->resource,
 				       WL_SHELL_SURFACE_POPUP_DONE);
-		wl_input_device_end_grab(grab->input_device, time);
+		wl_input_device_end_pointer_grab(grab->input_device, time);
 		shsurf->popup.grab.input_device = NULL;
 	}
 
@@ -499,7 +503,7 @@ popup_grab_button(struct wl_grab *grab,
 		shsurf->popup.initial_up = 1;
 }
 
-static const struct wl_grab_interface popup_grab_interface = {
+static const struct wl_pointer_grab_interface popup_grab_interface = {
 	popup_grab_focus,
 	popup_grab_motion,
 	popup_grab_button,
@@ -537,7 +541,7 @@ shell_map_popup(struct shell_surface *shsurf, uint32_t time)
 	shsurf->popup.time = device->grab_time;
 	shsurf->popup.initial_up = 0;
 
-	wl_input_device_start_grab(shsurf->popup.grab.input_device,
+	wl_input_device_start_pointer_grab(shsurf->popup.grab.input_device,
 				   &shsurf->popup.grab, shsurf->popup.time);
 }
 
@@ -572,7 +576,7 @@ destroy_shell_surface(struct wl_resource *resource)
 	struct shell_surface *shsurf = resource->data;
 
 	if (shsurf->popup.grab.input_device)
-		wl_input_device_end_grab(shsurf->popup.grab.input_device, 0);
+		wl_input_device_end_pointer_grab(shsurf->popup.grab.input_device, 0);
 
 	/* in case cleaning up a dead client destroys shell_surface first */
 	if (shsurf->surface)
@@ -974,7 +978,7 @@ terminate_binding(struct wl_input_device *device, uint32_t time,
 }
 
 static void
-rotate_grab_motion(struct wl_grab *grab,
+rotate_grab_motion(struct wl_pointer_grab *grab,
 		 uint32_t time, int32_t x, int32_t y)
 {
 	struct rotate_grab *rotate =
@@ -1025,7 +1029,7 @@ rotate_grab_motion(struct wl_grab *grab,
 }
 
 static void
-rotate_grab_button(struct wl_grab *grab,
+rotate_grab_button(struct wl_pointer_grab *grab,
 		 uint32_t time, int32_t button, int32_t state)
 {
 	struct rotate_grab *rotate =
@@ -1036,12 +1040,12 @@ rotate_grab_button(struct wl_grab *grab,
 	if (device->button_count == 0 && state == 0) {
 		weston_matrix_multiply(&surface->rotation.rotation,
 				       &rotate->rotation);
-		wl_input_device_end_grab(device, time);
+		wl_input_device_end_pointer_grab(device, time);
 		free(rotate);
 	}
 }
 
-static const struct wl_grab_interface rotate_grab_interface = {
+static const struct wl_pointer_grab_interface rotate_grab_interface = {
 	noop_grab_focus,
 	rotate_grab_motion,
 	rotate_grab_button,
@@ -1087,7 +1091,7 @@ rotate_binding(struct wl_input_device *device, uint32_t time,
 				 surface->surface->geometry.height / 2,
 				 &rotate->center.x, &rotate->center.y);
 
-	wl_input_device_start_grab(device, &rotate->grab, time);
+	wl_input_device_start_pointer_grab(device, &rotate->grab, time);
 
 	dx = device->x - rotate->center.x;
 	dy = device->y - rotate->center.y;
@@ -1163,7 +1167,7 @@ click_to_activate_binding(struct wl_input_device *device,
 	struct weston_surface *focus;
 
 	focus = (struct weston_surface *) device->pointer_focus;
-	if (state && focus && device->grab == &device->default_grab)
+	if (state && focus && device->pointer_grab == &device->default_pointer_grab)
 		activate(compositor->shell, focus, wd, time);
 }
 
-- 
1.7.4.1



More information about the wayland-devel mailing list