Use enum wl_keyboard_key_state instead of integer

Instead of using a uint32_t for state everywhere (except on the wire,
where that's still the call signature), use the new
wl_keyboard_key_state enum, and explicit comparisons.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
dev
Daniel Stone 13 years ago committed by Kristian Høgsberg
parent 4dbadb1556
commit c9785eacca
  1. 5
      clients/clickdot.c
  2. 10
      clients/eventdemo.c
  3. 5
      clients/resizor.c
  4. 10
      clients/terminal.c
  5. 5
      clients/view.c
  6. 6
      clients/window.c
  7. 2
      clients/window.h
  8. 4
      src/compositor-wayland.c
  9. 9
      src/compositor-x11.c
  10. 7
      src/compositor.c
  11. 2
      src/compositor.h
  12. 4
      src/evdev.c
  13. 5
      src/shell.c
  14. 5
      src/util.c

@ -180,11 +180,12 @@ keyboard_focus_handler(struct window *window,
static void static void
key_handler(struct window *window, struct input *input, uint32_t time, key_handler(struct window *window, struct input *input, uint32_t time,
uint32_t key, uint32_t sym, uint32_t state, void *data) uint32_t key, uint32_t sym,
enum wl_keyboard_key_state state, void *data)
{ {
struct clickdot *clickdot = data; struct clickdot *clickdot = data;
if (state == 0) if (state == WL_KEYBOARD_KEY_STATE_RELEASED)
return; return;
switch (sym) { switch (sym) {

@ -188,15 +188,19 @@ keyboard_focus_handler(struct window *window,
*/ */
static void static void
key_handler(struct window *window, struct input *input, uint32_t time, key_handler(struct window *window, struct input *input, uint32_t time,
uint32_t key, uint32_t unicode, uint32_t state, void *data) uint32_t key, uint32_t unicode, enum wl_keyboard_key_state state,
void *data)
{ {
uint32_t modifiers = input_get_modifiers(input); uint32_t modifiers = input_get_modifiers(input);
if(!log_key) if(!log_key)
return; return;
printf("key key: %d, unicode: %d, state: %d, modifiers: %d\n", printf("key key: %d, unicode: %d, state: %s, modifiers: 0x%x\n",
key, unicode, state, modifiers); key, unicode,
(state == WL_KEYBOARD_KEY_STATE_PRESSED) ? "pressed" :
"released",
modifiers);
} }
/** /**

@ -139,12 +139,13 @@ keyboard_focus_handler(struct window *window,
static void static void
key_handler(struct window *window, struct input *input, uint32_t time, key_handler(struct window *window, struct input *input, uint32_t time,
uint32_t key, uint32_t sym, uint32_t state, void *data) uint32_t key, uint32_t sym, enum wl_keyboard_key_state state,
void *data)
{ {
struct resizor *resizor = data; struct resizor *resizor = data;
struct rectangle allocation; struct rectangle allocation;
if (state == 0) if (state == WL_KEYBOARD_KEY_STATE_RELEASED)
return; return;
window_get_allocation(resizor->window, &allocation); window_get_allocation(resizor->window, &allocation);

@ -2079,7 +2079,8 @@ handle_bound_key(struct terminal *terminal,
static void static void
key_handler(struct window *window, struct input *input, uint32_t time, key_handler(struct window *window, struct input *input, uint32_t time,
uint32_t key, uint32_t sym, uint32_t state, void *data) uint32_t key, uint32_t sym, enum wl_keyboard_key_state state,
void *data)
{ {
struct terminal *terminal = data; struct terminal *terminal = data;
char ch[MAX_RESPONSE]; char ch[MAX_RESPONSE];
@ -2089,12 +2090,13 @@ key_handler(struct window *window, struct input *input, uint32_t time,
modifiers = input_get_modifiers(input); modifiers = input_get_modifiers(input);
if ((modifiers & MOD_CONTROL_MASK) && if ((modifiers & MOD_CONTROL_MASK) &&
(modifiers & MOD_SHIFT_MASK) && (modifiers & MOD_SHIFT_MASK) &&
state && handle_bound_key(terminal, input, sym, time)) state == WL_KEYBOARD_KEY_STATE_PRESSED &&
handle_bound_key(terminal, input, sym, time))
return; return;
switch (sym) { switch (sym) {
case XKB_KEY_F11: case XKB_KEY_F11:
if (!state) if (state == WL_KEYBOARD_KEY_STATE_RELEASED)
break; break;
terminal->fullscreen ^= 1; terminal->fullscreen ^= 1;
window_set_fullscreen(window, terminal->fullscreen); window_set_fullscreen(window, terminal->fullscreen);
@ -2205,7 +2207,7 @@ key_handler(struct window *window, struct input *input, uint32_t time,
break; break;
} }
if (state && len > 0) if (state == WL_KEYBOARD_KEY_STATE_PRESSED && len > 0)
terminal_write(terminal, ch, len); terminal_write(terminal, ch, len);
} }

@ -160,11 +160,12 @@ button_handler(struct widget *widget, struct input *input, uint32_t time,
static void static void
key_handler(struct window *window, struct input *input, uint32_t time, key_handler(struct window *window, struct input *input, uint32_t time,
uint32_t key, uint32_t unicode, uint32_t state, void *data) uint32_t key, uint32_t unicode,
enum wl_keyboard_key_state state, void *data)
{ {
struct view *view = data; struct view *view = data;
if(!state) if (state == WL_KEYBOARD_KEY_STATE_RELEASED)
return; return;
switch (key) { switch (key) {

@ -1819,12 +1819,14 @@ pointer_handle_axis(void *data, struct wl_pointer *pointer,
static void static void
keyboard_handle_key(void *data, struct wl_keyboard *keyboard, keyboard_handle_key(void *data, struct wl_keyboard *keyboard,
uint32_t serial, uint32_t time, uint32_t key, uint32_t state) uint32_t serial, uint32_t time, uint32_t key,
uint32_t state_w)
{ {
struct input *input = data; struct input *input = data;
struct window *window = input->keyboard_focus; struct window *window = input->keyboard_focus;
struct display *d = input->display; struct display *d = input->display;
uint32_t code, num_syms; uint32_t code, num_syms;
enum wl_keyboard_key_state state = state_w;
const xkb_keysym_t *syms; const xkb_keysym_t *syms;
xkb_keysym_t sym; xkb_keysym_t sym;
xkb_mod_mask_t mask; xkb_mod_mask_t mask;
@ -1852,7 +1854,7 @@ keyboard_handle_key(void *data, struct wl_keyboard *keyboard,
if (num_syms == 1 && syms[0] == XKB_KEY_F5 && if (num_syms == 1 && syms[0] == XKB_KEY_F5 &&
input->modifiers == MOD_ALT_MASK) { input->modifiers == MOD_ALT_MASK) {
if (state) if (state == WL_KEYBOARD_KEY_STATE_PRESSED)
window_set_maximized(window, window_set_maximized(window,
window->type != TYPE_MAXIMIZED); window->type != TYPE_MAXIMIZED);
} else if (window->key_handler) { } else if (window->key_handler) {

@ -157,7 +157,7 @@ enum cursor_type {
typedef void (*window_key_handler_t)(struct window *window, struct input *input, typedef void (*window_key_handler_t)(struct window *window, struct input *input,
uint32_t time, uint32_t key, uint32_t unicode, uint32_t time, uint32_t key, uint32_t unicode,
uint32_t state, void *data); enum wl_keyboard_key_state state, void *data);
typedef void (*window_keyboard_focus_handler_t)(struct window *window, typedef void (*window_keyboard_focus_handler_t)(struct window *window,
struct input *device, void *data); struct input *device, void *data);

@ -607,7 +607,9 @@ input_handle_key(void *data, struct wl_keyboard *keyboard,
struct wayland_input *input = data; struct wayland_input *input = data;
struct wayland_compositor *c = input->compositor; struct wayland_compositor *c = input->compositor;
notify_key(&c->base.seat->seat, time, key, state); notify_key(&c->base.seat->seat, time, key,
state ? WL_KEYBOARD_KEY_STATE_PRESSED :
WL_KEYBOARD_KEY_STATE_RELEASED);
} }
static void static void

@ -586,7 +586,8 @@ x11_compositor_handle_event(int fd, uint32_t mask, void *data)
* event below. */ * event below. */
notify_key(&c->base.seat->seat, notify_key(&c->base.seat->seat,
weston_compositor_get_time(), weston_compositor_get_time(),
key_release->detail - 8, 0); key_release->detail - 8,
WL_KEYBOARD_KEY_STATE_RELEASED);
free(prev); free(prev);
prev = NULL; prev = NULL;
break; break;
@ -623,7 +624,8 @@ x11_compositor_handle_event(int fd, uint32_t mask, void *data)
key_press = (xcb_key_press_event_t *) event; key_press = (xcb_key_press_event_t *) event;
notify_key(&c->base.seat->seat, notify_key(&c->base.seat->seat,
weston_compositor_get_time(), weston_compositor_get_time(),
key_press->detail - 8, 1); key_press->detail - 8,
WL_KEYBOARD_KEY_STATE_PRESSED);
break; break;
case XCB_KEY_RELEASE: case XCB_KEY_RELEASE:
prev = event; prev = event;
@ -707,7 +709,8 @@ x11_compositor_handle_event(int fd, uint32_t mask, void *data)
key_release = (xcb_key_press_event_t *) prev; key_release = (xcb_key_press_event_t *) prev;
notify_key(&c->base.seat->seat, notify_key(&c->base.seat->seat,
weston_compositor_get_time(), weston_compositor_get_time(),
key_release->detail - 8, 0); key_release->detail - 8,
WL_KEYBOARD_KEY_STATE_RELEASED);
free(prev); free(prev);
prev = NULL; prev = NULL;
break; break;

@ -1790,7 +1790,8 @@ update_modifier_state(struct weston_seat *seat, uint32_t key, uint32_t state)
} }
WL_EXPORT void WL_EXPORT void
notify_key(struct wl_seat *seat, uint32_t time, uint32_t key, uint32_t state) notify_key(struct wl_seat *seat, uint32_t time, uint32_t key,
enum wl_keyboard_key_state state)
{ {
struct weston_seat *ws = (struct weston_seat *) seat; struct weston_seat *ws = (struct weston_seat *) seat;
struct weston_compositor *compositor = ws->compositor; struct weston_compositor *compositor = ws->compositor;
@ -1801,7 +1802,7 @@ notify_key(struct wl_seat *seat, uint32_t time, uint32_t key, uint32_t state)
uint32_t *k, *end; uint32_t *k, *end;
int mods; int mods;
if (state) { if (state == WL_KEYBOARD_KEY_STATE_PRESSED) {
if (compositor->ping_handler && focus) if (compositor->ping_handler && focus)
compositor->ping_handler(focus, serial); compositor->ping_handler(focus, serial);
@ -1819,7 +1820,7 @@ notify_key(struct wl_seat *seat, uint32_t time, uint32_t key, uint32_t state)
*k = *--end; *k = *--end;
} }
seat->keyboard->keys.size = (void *) end - seat->keyboard->keys.data; seat->keyboard->keys.size = (void *) end - seat->keyboard->keys.data;
if (state) { if (state == WL_KEYBOARD_KEY_STATE_PRESSED) {
k = wl_array_add(&seat->keyboard->keys, sizeof *k); k = wl_array_add(&seat->keyboard->keys, sizeof *k);
*k = key; *k = key;
} }

@ -484,7 +484,7 @@ notify_axis(struct wl_seat *seat, uint32_t time, uint32_t axis,
int32_t value); int32_t value);
void void
notify_key(struct wl_seat *seat, uint32_t time, uint32_t key, notify_key(struct wl_seat *seat, uint32_t time, uint32_t key,
uint32_t state); enum wl_keyboard_key_state state);
void void
notify_pointer_focus(struct wl_seat *seat, struct weston_output *output, notify_pointer_focus(struct wl_seat *seat, struct weston_output *output,

@ -86,7 +86,9 @@ evdev_process_key(struct evdev_input_device *device,
default: default:
notify_key(&device->master->base.seat, notify_key(&device->master->base.seat,
time, e->code, e->value); time, e->code,
e->value ? WL_KEYBOARD_KEY_STATE_PRESSED :
WL_KEYBOARD_KEY_STATE_RELEASED);
break; break;
} }
} }

@ -2482,11 +2482,12 @@ switcher_destroy(struct switcher *switcher)
static void static void
switcher_key(struct wl_keyboard_grab *grab, switcher_key(struct wl_keyboard_grab *grab,
uint32_t time, uint32_t key, uint32_t state) uint32_t time, uint32_t key, uint32_t state_w)
{ {
struct switcher *switcher = container_of(grab, struct switcher, grab); struct switcher *switcher = container_of(grab, struct switcher, grab);
enum wl_keyboard_key_state state = state_w;
if (key == KEY_TAB && state) if (key == KEY_TAB && state == WL_KEYBOARD_KEY_STATE_PRESSED)
switcher_next(switcher); switcher_next(switcher);
} }

@ -249,17 +249,18 @@ struct binding_keyboard_grab {
static void static void
binding_key(struct wl_keyboard_grab *grab, binding_key(struct wl_keyboard_grab *grab,
uint32_t time, uint32_t key, uint32_t state) uint32_t time, uint32_t key, uint32_t state_w)
{ {
struct binding_keyboard_grab *b = struct binding_keyboard_grab *b =
container_of(grab, struct binding_keyboard_grab, grab); container_of(grab, struct binding_keyboard_grab, grab);
struct wl_resource *resource; struct wl_resource *resource;
struct wl_display *display; struct wl_display *display;
enum wl_keyboard_key_state state = state_w;
uint32_t serial; uint32_t serial;
resource = grab->keyboard->focus_resource; resource = grab->keyboard->focus_resource;
if (key == b->key) { if (key == b->key) {
if (!state) { if (state == WL_KEYBOARD_KEY_STATE_RELEASED) {
wl_keyboard_end_grab(grab->keyboard); wl_keyboard_end_grab(grab->keyboard);
free(b); free(b);
} }

Loading…
Cancel
Save