From 0793756d525f3d1309ca180d6e549f7a3dd6380b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Tue, 12 Apr 2011 17:25:42 -0400 Subject: [PATCH] Move shell bindings to shell.c --- compositor/compositor.c | 53 ++------------------------------------- compositor/compositor.h | 10 -------- compositor/shell.c | 55 +++++++++++++++++++++++++++++++++++++++-- 3 files changed, 55 insertions(+), 63 deletions(-) diff --git a/compositor/compositor.c b/compositor/compositor.c index b8eecde2..4536c854 100644 --- a/compositor/compositor.c +++ b/compositor/compositor.c @@ -1008,51 +1008,6 @@ wlsc_surface_activate(struct wlsc_surface *surface, time); } -static void -move_binding(struct wl_input_device *device, uint32_t time, - uint32_t key, uint32_t button, uint32_t state, void *data) -{ - struct wlsc_compositor *compositor = data; - struct wlsc_surface *surface = - (struct wlsc_surface *) device->pointer_focus; - - shell_move(NULL, - (struct wl_shell *) &compositor->shell, - &surface->surface, device, time); -} - -static void -resize_binding(struct wl_input_device *device, uint32_t time, - uint32_t key, uint32_t button, uint32_t state, void *data) -{ - struct wlsc_compositor *compositor = data; - struct wlsc_surface *surface = - (struct wlsc_surface *) device->pointer_focus; - uint32_t edges = 0; - int32_t x, y; - - x = device->grab_x - surface->x; - y = device->grab_y - surface->y; - - if (x < surface->width / 3) - edges |= WL_SHELL_RESIZE_LEFT; - else if (x < 2 * surface->width / 3) - edges |= 0; - else - edges |= WL_SHELL_RESIZE_RIGHT; - - if (y < surface->height / 3) - edges |= WL_SHELL_RESIZE_TOP; - else if (y < 2 * surface->height / 3) - edges |= 0; - else - edges |= WL_SHELL_RESIZE_BOTTOM; - - shell_resize(NULL, - (struct wl_shell *) &compositor->shell, - &surface->surface, device, time, edges); -} - struct wlsc_binding { uint32_t key; uint32_t button; @@ -1565,13 +1520,13 @@ wlsc_compositor_init(struct wlsc_compositor *ec, struct wl_display *display) wlsc_shm_init(ec); eglBindWaylandDisplayWL(ec->display, ec->wl_display); - wlsc_shell_init(ec); - wl_list_init(&ec->surface_list); wl_list_init(&ec->input_device_list); wl_list_init(&ec->output_list); wl_list_init(&ec->binding_list); + wlsc_shell_init(ec); + wlsc_compositor_add_binding(ec, KEY_BACKSPACE, 0, MODIFIER_CTRL | MODIFIER_ALT, terminate_binding, ec); @@ -1581,10 +1536,6 @@ wlsc_compositor_init(struct wlsc_compositor *ec, struct wl_display *display) switcher_terminate_binding, ec); wlsc_compositor_add_binding(ec, KEY_RIGHTMETA, MODIFIER_SUPER, 0, switcher_terminate_binding, ec); - wlsc_compositor_add_binding(ec, 0, BTN_LEFT, MODIFIER_SUPER, - move_binding, ec); - wlsc_compositor_add_binding(ec, 0, BTN_MIDDLE, MODIFIER_SUPER, - resize_binding, ec); create_pointer_images(ec); diff --git a/compositor/compositor.h b/compositor/compositor.h index 70a223d4..6828b280 100644 --- a/compositor/compositor.h +++ b/compositor/compositor.h @@ -250,16 +250,6 @@ wlsc_shm_init(struct wlsc_compositor *ec); int wlsc_shell_init(struct wlsc_compositor *ec); -void -shell_move(struct wl_client *client, struct wl_shell *shell, - struct wl_surface *surface, - struct wl_input_device *device, uint32_t time); - -void -shell_resize(struct wl_client *client, struct wl_shell *shell, - struct wl_surface *surface, - struct wl_input_device *device, uint32_t time, uint32_t edges); - struct wlsc_compositor * x11_compositor_create(struct wl_display *display, int width, int height); diff --git a/compositor/shell.c b/compositor/shell.c index 8ed7d2cb..c480e9ae 100644 --- a/compositor/shell.c +++ b/compositor/shell.c @@ -23,6 +23,7 @@ #include #include #include +#include #include "wayland-server.h" #include "compositor.h" @@ -74,7 +75,7 @@ static const struct wl_grab_interface move_grab_interface = { move_grab_end }; -void +static void shell_move(struct wl_client *client, struct wl_shell *shell, struct wl_surface *surface, struct wl_input_device *device, uint32_t time) @@ -169,7 +170,7 @@ static const struct wl_grab_interface resize_grab_interface = { resize_grab_end }; -void +static void shell_resize(struct wl_client *client, struct wl_shell *shell, struct wl_surface *surface, struct wl_input_device *device, uint32_t time, uint32_t edges) @@ -662,6 +663,51 @@ const static struct wl_shell_interface shell_interface = { shell_create_selection }; +static void +move_binding(struct wl_input_device *device, uint32_t time, + uint32_t key, uint32_t button, uint32_t state, void *data) +{ + struct wlsc_compositor *compositor = data; + struct wlsc_surface *surface = + (struct wlsc_surface *) device->pointer_focus; + + shell_move(NULL, + (struct wl_shell *) &compositor->shell, + &surface->surface, device, time); +} + +static void +resize_binding(struct wl_input_device *device, uint32_t time, + uint32_t key, uint32_t button, uint32_t state, void *data) +{ + struct wlsc_compositor *compositor = data; + struct wlsc_surface *surface = + (struct wlsc_surface *) device->pointer_focus; + uint32_t edges = 0; + int32_t x, y; + + x = device->grab_x - surface->x; + y = device->grab_y - surface->y; + + if (x < surface->width / 3) + edges |= WL_SHELL_RESIZE_LEFT; + else if (x < 2 * surface->width / 3) + edges |= 0; + else + edges |= WL_SHELL_RESIZE_RIGHT; + + if (y < surface->height / 3) + edges |= WL_SHELL_RESIZE_TOP; + else if (y < 2 * surface->height / 3) + edges |= 0; + else + edges |= WL_SHELL_RESIZE_BOTTOM; + + shell_resize(NULL, + (struct wl_shell *) &compositor->shell, + &surface->surface, device, time, edges); +} + int wlsc_shell_init(struct wlsc_compositor *ec) { @@ -673,5 +719,10 @@ wlsc_shell_init(struct wlsc_compositor *ec) if (wl_display_add_global(ec->wl_display, &shell->object, NULL)) return -1; + wlsc_compositor_add_binding(ec, 0, BTN_LEFT, MODIFIER_SUPER, + move_binding, ec); + wlsc_compositor_add_binding(ec, 0, BTN_MIDDLE, MODIFIER_SUPER, + resize_binding, ec); + return 0; }