/* Nothing to do. */
}
-static void
+static pepper_bool_t
default_keyboard_grab_key(pepper_keyboard_t *keyboard, void *data,
uint32_t time, uint32_t key, uint32_t state)
{
pepper_keyboard_send_key(keyboard, pepper_keyboard_get_focus(keyboard), time,
key, state);
+
+ return PEPPER_TRUE;
}
-static void
+static pepper_bool_t
default_keyboard_grab_modifiers(pepper_keyboard_t *keyboard, void *data,
uint32_t mods_depressed,
uint32_t mods_latched, uint32_t mods_locked, uint32_t group)
{
pepper_keyboard_send_modifiers(keyboard, pepper_keyboard_get_focus(keyboard),
mods_depressed, mods_latched, mods_locked, group);
+
+ return PEPPER_TRUE;
}
-static void
+static pepper_bool_t
default_keyboard_grab_cancel(pepper_keyboard_t *keyboard, void *data)
{
/* Nothing to do. */
+ return PEPPER_TRUE;
}
static const pepper_keyboard_grab_t default_keyboard_grab = {
static void
update_modifiers(pepper_keyboard_t *keyboard)
{
+ pepper_bool_t res = PEPPER_TRUE;
+
if ((keyboard->pending.mods_depressed != keyboard->mods_depressed) ||
(keyboard->pending.mods_latched != keyboard->mods_latched) ||
(keyboard->pending.mods_locked != keyboard->mods_locked) ||
keyboard->mods_locked = keyboard->pending.mods_locked;
keyboard->group = keyboard->pending.group;
- keyboard->grab->modifiers(keyboard,
- keyboard->data,
- keyboard->mods_depressed,
- keyboard->mods_latched,
- keyboard->mods_locked, keyboard->group);
+ res = keyboard->grab->modifiers(keyboard,
+ keyboard->data,
+ keyboard->mods_depressed,
+ keyboard->mods_latched,
+ keyboard->mods_locked, keyboard->group);
+
+ if (!res) return;
}
}
uint32_t *keys = keyboard->keys.data;
unsigned int num_keys = keyboard->keys.size / sizeof(uint32_t);
unsigned int i;
+ pepper_bool_t res = PEPPER_TRUE;
if (id != PEPPER_EVENT_INPUT_DEVICE_KEYBOARD_KEY)
return;
if (event->state == PEPPER_KEY_STATE_PRESSED)
*(uint32_t *) wl_array_add(&keyboard->keys, sizeof(uint32_t)) = event->key;
- if (keyboard->grab)
- keyboard->grab->key(keyboard, keyboard->data, event->time, event->key,
- event->state);
+ if (keyboard->grab) {
+ res = keyboard->grab->key(keyboard, keyboard->data, event->time, event->key,
+ event->state);
+ if (!res) return;
+ }
if (keyboard->need_update_keymap && keyboard->keys.size == 0) {
pepper_object_emit_event(&keyboard->base,
* @param key key code
* @param state state flag (ex. WL_KEYBOARD_KEY_STATE_PRESSED)
**/
- void (*key)(pepper_keyboard_t *keyboard, void *data, uint32_t time,
- uint32_t key,
- uint32_t state);
+ pepper_bool_t (*key)(pepper_keyboard_t *keyboard, void *data, uint32_t time,
+ uint32_t key,
+ uint32_t state);
/**
* Handler for keyboard modifier event
* @param mods_locked locked mods
* @param group (none)
**/
- void (*modifiers)(pepper_keyboard_t *keyboard, void *data,
- uint32_t mods_depressed,
- uint32_t mods_latched, uint32_t mods_locked, uint32_t group);
+ pepper_bool_t (*modifiers)(pepper_keyboard_t *keyboard, void *data,
+ uint32_t mods_depressed,
+ uint32_t mods_latched, uint32_t mods_locked, uint32_t group);
/**
* Handler for grab cancel
* @param keyboard keyboard object
* @param data data registered for the grab (@see pepper_keyboard_set_grab)
**/
- void (*cancel)(pepper_keyboard_t *keyboard, void *data);
+ pepper_bool_t (*cancel)(pepper_keyboard_t *keyboard, void *data);
};
PEPPER_API struct wl_list *