commit e025cb5
Michael Forney
·
2014-11-29 19:06:22 +0000 UTC
parent 284eb72
Pass button/key structure to handler instead of just press This way, we can make the start_interaction/end_interaction in libswc/window.c more symmetrical.
6 files changed,
+28,
-28
+6,
-6
1@@ -41,14 +41,14 @@ struct binding
2 };
3
4 static bool handle_key(struct keyboard * keyboard, uint32_t time,
5- struct press * press, uint32_t state);
6+ struct key * key, uint32_t state);
7
8 static struct keyboard_handler key_binding_handler = {
9 .key = &handle_key
10 };
11
12 static bool handle_button(struct pointer_handler * handler, uint32_t time,
13- struct press * press, uint32_t state);
14+ struct button * button, uint32_t state);
15
16 static struct pointer_handler button_binding_handler = {
17 .button = &handle_button
18@@ -136,15 +136,15 @@ static bool handle_binding
19 }
20
21 bool handle_key(struct keyboard * keyboard, uint32_t time,
22- struct press * key, uint32_t state)
23+ struct key * key, uint32_t state)
24 {
25- return handle_binding(time, key, state, &find_key_binding);
26+ return handle_binding(time, &key->press, state, &find_key_binding);
27 }
28
29 bool handle_button(struct pointer_handler * handler, uint32_t time,
30- struct press * button, uint32_t state)
31+ struct button * button, uint32_t state)
32 {
33- return handle_binding(time, button, state, &find_button_binding);
34+ return handle_binding(time, &button->press, state, &find_button_binding);
35 }
36
37 bool swc_bindings_initialize()
+12,
-12
1@@ -62,24 +62,24 @@ static void leave(struct input_focus_handler * handler,
2 }
3
4 static bool client_handle_key(struct keyboard * keyboard, uint32_t time,
5- struct press * press, uint32_t state)
6+ struct key * key, uint32_t state)
7 {
8- uint32_t * key;
9+ uint32_t * value;
10
11 if (state == WL_KEYBOARD_KEY_STATE_PRESSED)
12 {
13- if (!(key = wl_array_add(&keyboard->client_keys, sizeof *key)))
14+ if (!(value = wl_array_add(&keyboard->client_keys, sizeof *value)))
15 return false;
16
17- *key = press->value;
18+ *value = key->press.value;
19 }
20 else
21 {
22- wl_array_for_each(key, &keyboard->client_keys)
23+ wl_array_for_each(value, &keyboard->client_keys)
24 {
25- if (*key == press->value)
26+ if (*value == key->press.value)
27 {
28- swc_array_remove(&keyboard->client_keys, key, sizeof *key);
29+ swc_array_remove(&keyboard->client_keys, value, sizeof *value);
30 break;
31 }
32 }
33@@ -87,8 +87,8 @@ static bool client_handle_key(struct keyboard * keyboard, uint32_t time,
34
35 if (keyboard->focus.resource)
36 {
37- wl_keyboard_send_key(keyboard->focus.resource, press->serial, time,
38- press->value, state);
39+ wl_keyboard_send_key(keyboard->focus.resource, key->press.serial, time,
40+ key->press.value, state);
41 }
42
43 return true;
44@@ -163,7 +163,7 @@ void keyboard_reset(struct keyboard * keyboard)
45 if (key->handler)
46 {
47 key->press.serial = wl_display_next_serial(swc.display);
48- key->handler->key(keyboard, time, &key->press,
49+ key->handler->key(keyboard, time, key,
50 WL_KEYBOARD_KEY_STATE_RELEASED);
51 /* Don't bother updating the XKB state because we will be resetting
52 * it later on and it is unlikely that a key handler cares about the
53@@ -255,7 +255,7 @@ void keyboard_handle_key(struct keyboard * keyboard, uint32_t time,
54 if (key->handler)
55 {
56 key->press.serial = serial;
57- key->handler->key(keyboard, time, &key->press, state);
58+ key->handler->key(keyboard, time, key, state);
59 }
60
61 swc_array_remove(&keyboard->keys, key, sizeof *key);
62@@ -277,7 +277,7 @@ void keyboard_handle_key(struct keyboard * keyboard, uint32_t time,
63 /* Go through handlers to see if any will accept this key event. */
64 wl_list_for_each(handler, &keyboard->handlers, link)
65 {
66- if (handler->key && handler->key(keyboard, time, &key->press, state))
67+ if (handler->key && handler->key(keyboard, time, key, state))
68 {
69 key->handler = handler;
70 break;
+1,
-1
1@@ -50,7 +50,7 @@ struct keyboard_modifier_state
2 struct keyboard_handler
3 {
4 bool (* key)(struct keyboard * keyboard, uint32_t time,
5- struct press * press, uint32_t state);
6+ struct key * key, uint32_t state);
7 bool (* modifiers)(struct keyboard * keyboard,
8 const struct keyboard_modifier_state * state);
9
+5,
-5
1@@ -153,7 +153,7 @@ void pointer_set_cursor(struct pointer * pointer, uint32_t id)
2
3 static bool client_handle_button
4 (struct pointer_handler * handler, uint32_t time,
5- struct press * press, uint32_t state)
6+ struct button * button, uint32_t state)
7 {
8 struct pointer * pointer
9 = wl_container_of(handler, pointer, client_handler);
10@@ -161,8 +161,8 @@ static bool client_handle_button
11 if (!pointer->focus.resource)
12 return false;
13
14- wl_pointer_send_button(pointer->focus.resource, press->serial, time,
15- press->value, state);
16+ wl_pointer_send_button(pointer->focus.resource, button->press.serial, time,
17+ button->press.value, state);
18
19 return true;
20 }
21@@ -371,7 +371,7 @@ void pointer_handle_button(struct pointer * pointer, uint32_t time,
22 {
23 button->press.serial = serial;
24 button->handler->button(button->handler, time,
25- &button->press, state);
26+ button, state);
27 }
28
29 swc_array_remove(&pointer->buttons, button, sizeof *button);
30@@ -393,7 +393,7 @@ void pointer_handle_button(struct pointer * pointer, uint32_t time,
31 wl_list_for_each(handler, &pointer->handlers, link)
32 {
33 if (handler->button && handler->button(handler, time,
34- &button->press, state))
35+ button, state))
36 {
37 button->handler = handler;
38 break;
+1,
-1
1@@ -42,7 +42,7 @@ struct pointer_handler
2 bool (* motion)(struct pointer_handler * handler, uint32_t time,
3 wl_fixed_t x, wl_fixed_t y);
4 bool (* button)(struct pointer_handler * handler, uint32_t time,
5- struct press * press, uint32_t state);
6+ struct button * button, uint32_t state);
7 bool (* axis)(struct pointer_handler * handler, uint32_t time,
8 enum wl_pointer_axis axis, wl_fixed_t amount);
9
+3,
-3
1@@ -87,7 +87,7 @@ static void end_interaction(struct window_pointer_interaction * interaction)
2
3 button = pointer_get_button(swc.seat->pointer, interaction->serial);
4 interaction->original_handler->button(interaction->original_handler,
5- swc_time(), &button->press,
6+ swc_time(), button,
7 WL_POINTER_BUTTON_STATE_RELEASED);
8 }
9
10@@ -324,7 +324,7 @@ static bool resize_motion(struct pointer_handler * handler, uint32_t time,
11 }
12
13 static bool handle_button(struct pointer_handler * handler, uint32_t time,
14- struct press * press, uint32_t state)
15+ struct button * button, uint32_t state)
16 {
17 struct window_pointer_interaction * interaction
18 = wl_container_of(handler, interaction, handler);
19@@ -337,7 +337,7 @@ static bool handle_button(struct pointer_handler * handler, uint32_t time,
20
21 end_interaction(interaction);
22 interaction->original_handler->button(interaction->original_handler, time,
23- press, state);
24+ button, state);
25 return true;
26 }
27