Split bindings into separate key/button/axis bindings
Rather than attempting to have the one handler prototype everywhere.
Signed-off-by: Daniel Stone <daniel@fooishbar.org>
diff --git a/src/shell.c b/src/shell.c
index fe7b982..fc7f48f 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -1541,9 +1541,7 @@
}
static void
-move_binding(struct wl_seat *seat, uint32_t time,
- uint32_t key, uint32_t button, uint32_t axis, int32_t value,
- void *data)
+move_binding(struct wl_seat *seat, uint32_t time, uint32_t button, void *data)
{
struct weston_surface *surface =
(struct weston_surface *) seat->pointer->focus;
@@ -1570,9 +1568,7 @@
}
static void
-resize_binding(struct wl_seat *seat, uint32_t time,
- uint32_t key, uint32_t button, uint32_t axis, int32_t value,
- void *data)
+resize_binding(struct wl_seat *seat, uint32_t time, uint32_t button, void *data)
{
struct weston_surface *surface =
(struct weston_surface *) seat->pointer->focus;
@@ -1620,8 +1616,7 @@
}
static void
-surface_opacity_binding(struct wl_seat *seat, uint32_t time,
- uint32_t key, uint32_t button, uint32_t axis,
+surface_opacity_binding(struct wl_seat *seat, uint32_t time, uint32_t axis,
int32_t value, void *data)
{
float step = 0.05;
@@ -1656,9 +1651,8 @@
}
static void
-zoom_binding(struct wl_seat *seat, uint32_t time,
- uint32_t key, uint32_t button, uint32_t axis, int32_t value,
- void *data)
+do_zoom(struct wl_seat *seat, uint32_t time, uint32_t key, uint32_t axis,
+ int32_t value)
{
struct weston_seat *ws = (struct weston_seat *) seat;
struct weston_compositor *compositor = ws->compositor;
@@ -1670,9 +1664,9 @@
wl_fixed_to_double(seat->pointer->x),
wl_fixed_to_double(seat->pointer->y),
NULL)) {
- if (key == KEY_PAGEUP && value)
+ if (key == KEY_PAGEUP)
increment = output->zoom.increment;
- else if (key == KEY_PAGEDOWN && value)
+ else if (key == KEY_PAGEDOWN)
increment = -output->zoom.increment;
else if (axis == WL_POINTER_AXIS_VERTICAL_SCROLL)
increment = output->zoom.increment * value;
@@ -1701,13 +1695,26 @@
}
static void
-terminate_binding(struct wl_seat *seat, uint32_t time,
- uint32_t key, uint32_t button, uint32_t axis, int32_t state, void *data)
+zoom_axis_binding(struct wl_seat *seat, uint32_t time, uint32_t axis,
+ int32_t value, void *data)
+{
+ do_zoom(seat, time, 0, axis, value);
+}
+
+static void
+zoom_key_binding(struct wl_seat *seat, uint32_t time, uint32_t key,
+ void *data)
+{
+ do_zoom(seat, time, key, 0, 0);
+}
+
+static void
+terminate_binding(struct wl_seat *seat, uint32_t time, uint32_t key,
+ void *data)
{
struct weston_compositor *compositor = data;
- if (state)
- wl_display_terminate(compositor->wl_display);
+ wl_display_terminate(compositor->wl_display);
}
static void
@@ -1807,8 +1814,7 @@
};
static void
-rotate_binding(struct wl_seat *seat, uint32_t time,
- uint32_t key, uint32_t button, uint32_t axis, int32_t value,
+rotate_binding(struct wl_seat *seat, uint32_t time, uint32_t button,
void *data)
{
struct weston_surface *base_surface =
@@ -1936,16 +1942,13 @@
}
static void
-click_to_activate_binding(struct wl_seat *seat,
- uint32_t time, uint32_t key,
- uint32_t button, uint32_t axis, int32_t state_w,
+click_to_activate_binding(struct wl_seat *seat, uint32_t time, uint32_t button,
void *data)
{
struct weston_seat *ws = (struct weston_seat *) seat;
struct desktop_shell *shell = data;
struct weston_surface *focus;
struct weston_surface *upper;
- enum wl_pointer_button_state state = state_w;
focus = (struct weston_surface *) seat->pointer->focus;
if (!focus)
@@ -1954,8 +1957,7 @@
if (is_black_surface(focus, &upper))
focus = upper;
- if (state == WL_POINTER_BUTTON_STATE_PRESSED &&
- seat->pointer->grab == &seat->pointer->default_grab)
+ if (seat->pointer->grab == &seat->pointer->default_grab)
activate(shell, focus, ws);
}
@@ -2511,9 +2513,8 @@
};
static void
-switcher_binding(struct wl_seat *seat, uint32_t time,
- uint32_t key, uint32_t button, uint32_t axis,
- int32_t value, void *data)
+switcher_binding(struct wl_seat *seat, uint32_t time, uint32_t key,
+ void *data)
{
struct desktop_shell *shell = data;
struct switcher *switcher;
@@ -2531,8 +2532,8 @@
}
static void
-backlight_binding(struct wl_seat *seat, uint32_t time,
- uint32_t key, uint32_t button, uint32_t axis, int32_t state, void *data)
+backlight_binding(struct wl_seat *seat, uint32_t time, uint32_t key,
+ void *data)
{
struct weston_compositor *compositor = data;
struct weston_output *output;
@@ -2564,9 +2565,8 @@
}
static void
-debug_repaint_binding(struct wl_seat *seat, uint32_t time,
- uint32_t key, uint32_t button, uint32_t axis,
- int32_t value, void *data)
+debug_repaint_binding(struct wl_seat *seat, uint32_t time, uint32_t key,
+ void *data)
{
struct desktop_shell *shell = data;
struct weston_compositor *compositor = shell->compositor;
@@ -2599,21 +2599,18 @@
}
static void
-force_kill_binding(struct wl_seat *seat, uint32_t time,
- uint32_t key, uint32_t button, uint32_t axis,
- int32_t value, void *data)
+force_kill_binding(struct wl_seat *seat, uint32_t time, uint32_t key,
+ void *data)
{
struct wl_client *client;
pid_t pid;
uid_t uid;
gid_t gid;
- if (value == 1) {
- client = seat->keyboard->focus->resource.client;
- wl_client_get_credentials(client, &pid, &uid, &gid);
+ client = seat->keyboard->focus->resource.client;
+ wl_client_get_credentials(client, &pid, &uid, &gid);
- kill(pid, SIGKILL);
- }
+ kill(pid, SIGKILL);
}
static void
@@ -2638,45 +2635,45 @@
uint32_t mod;
/* fixed bindings */
- weston_compositor_add_binding(ec, KEY_BACKSPACE, 0, 0,
- MODIFIER_CTRL | MODIFIER_ALT,
- terminate_binding, ec);
- weston_compositor_add_binding(ec, 0, BTN_LEFT, 0, 0,
- click_to_activate_binding, shell);
- weston_compositor_add_binding(ec, 0, 0,
- WL_POINTER_AXIS_VERTICAL_SCROLL,
- MODIFIER_SUPER | MODIFIER_ALT,
- surface_opacity_binding, NULL);
- weston_compositor_add_binding(ec, 0, 0,
- WL_POINTER_AXIS_VERTICAL_SCROLL,
- MODIFIER_SUPER, zoom_binding, NULL);
+ weston_compositor_add_key_binding(ec, KEY_BACKSPACE,
+ MODIFIER_CTRL | MODIFIER_ALT,
+ terminate_binding, ec);
+ weston_compositor_add_button_binding(ec, BTN_LEFT, 0,
+ click_to_activate_binding,
+ shell);
+ weston_compositor_add_axis_binding(ec, WL_POINTER_AXIS_VERTICAL_SCROLL,
+ MODIFIER_SUPER | MODIFIER_ALT,
+ surface_opacity_binding, NULL);
+ weston_compositor_add_axis_binding(ec, WL_POINTER_AXIS_VERTICAL_SCROLL,
+ MODIFIER_SUPER, zoom_axis_binding,
+ NULL);
/* configurable bindings */
mod = shell->binding_modifier;
- weston_compositor_add_binding(ec, KEY_PAGEUP, 0, 0, mod,
- zoom_binding, NULL);
- weston_compositor_add_binding(ec, KEY_PAGEDOWN, 0, 0, mod,
- zoom_binding, NULL);
- weston_compositor_add_binding(ec, 0, BTN_LEFT, 0, mod,
- move_binding, shell);
- weston_compositor_add_binding(ec, 0, BTN_MIDDLE, 0, mod,
- resize_binding, shell);
- weston_compositor_add_binding(ec, 0, BTN_RIGHT, 0, mod,
- rotate_binding, NULL);
- weston_compositor_add_binding(ec, KEY_TAB, 0, 0, mod,
- switcher_binding, shell);
- weston_compositor_add_binding(ec, KEY_F9, 0, 0, mod,
- backlight_binding, ec);
- weston_compositor_add_binding(ec, KEY_BRIGHTNESSDOWN, 0, 0, 0,
- backlight_binding, ec);
- weston_compositor_add_binding(ec, KEY_F10, 0, 0, mod,
- backlight_binding, ec);
- weston_compositor_add_binding(ec, KEY_BRIGHTNESSUP, 0, 0, 0,
- backlight_binding, ec);
- weston_compositor_add_binding(ec, KEY_SPACE, 0, 0, mod,
- debug_repaint_binding, shell);
- weston_compositor_add_binding(ec, KEY_K, 0, 0, mod,
- force_kill_binding, shell);
+ weston_compositor_add_key_binding(ec, KEY_PAGEUP, mod,
+ zoom_key_binding, NULL);
+ weston_compositor_add_key_binding(ec, KEY_PAGEDOWN, mod,
+ zoom_key_binding, NULL);
+ weston_compositor_add_button_binding(ec, BTN_LEFT, mod, move_binding,
+ shell);
+ weston_compositor_add_button_binding(ec, BTN_MIDDLE, mod,
+ resize_binding, shell);
+ weston_compositor_add_button_binding(ec, BTN_RIGHT, mod,
+ rotate_binding, NULL);
+ weston_compositor_add_key_binding(ec, KEY_TAB, mod, switcher_binding,
+ shell);
+ weston_compositor_add_key_binding(ec, KEY_F9, mod, backlight_binding,
+ ec);
+ weston_compositor_add_key_binding(ec, KEY_BRIGHTNESSDOWN, 0,
+ backlight_binding, ec);
+ weston_compositor_add_key_binding(ec, KEY_F10, mod, backlight_binding,
+ ec);
+ weston_compositor_add_key_binding(ec, KEY_BRIGHTNESSUP, 0,
+ backlight_binding, ec);
+ weston_compositor_add_key_binding(ec, KEY_SPACE, mod,
+ debug_repaint_binding, shell);
+ weston_compositor_add_key_binding(ec, KEY_K, mod,
+ force_kill_binding, shell);
}
int