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