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;
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);
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);
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);
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include <linux/input.h>
#include "wayland-server.h"
#include "compositor.h"
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)
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)
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)
{
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;
}