commit c671c49
shar
·
2026-05-18 03:02:16 +0000 UTC
parent 98120f8
feat: add unregister binding function
2 files changed,
+38,
-1
+29,
-0
1@@ -260,6 +260,35 @@ swc_add_binding(enum swc_binding_type type, uint32_t modifiers, uint32_t value,
2 return 0;
3 }
4
5+EXPORT void
6+swc_remove_binding(enum swc_binding_type type, uint32_t modifiers,
7+ uint32_t value)
8+{
9+ struct wl_array *bindings;
10+ switch (type) {
11+ case SWC_BINDING_KEY:
12+ bindings = &key_bindings;
13+ break;
14+ case SWC_BINDING_BUTTON:
15+ bindings = &button_bindings;
16+ break;
17+ default:
18+ return;
19+ }
20+
21+ struct binding *b = find_binding(bindings, modifiers, value);
22+ if (!b) {
23+ return;
24+ }
25+
26+ struct binding *last = (struct binding *)((char *)bindings->data +
27+ bindings->size - sizeof(*b));
28+ if (b != last) {
29+ *b = *last;
30+ }
31+ bindings->size -= sizeof(*b);
32+}
33+
34 EXPORT int
35 swc_add_axis_binding(uint32_t modifiers, uint32_t axis,
36 swc_axis_binding_handler handler, void *data)
+9,
-1
1@@ -475,7 +475,7 @@ struct swc_decor_parts {
2 /**
3 * Describe decor around a window's edges.
4 *
5- * The edge sizes extend outward from the window content geometry.
6+ * The edge sizes extend outward from the window content geometry.
7 * if you put 0 it won't be visible.
8 *
9 * The title field controls an optional text slot rendered on one edge.
10@@ -580,6 +580,14 @@ int
11 swc_add_binding(enum swc_binding_type type, uint32_t modifiers, uint32_t value,
12 swc_binding_handler handler, void *data);
13
14+/**
15+ * Unregister a registered input binding.
16+ *
17+ */
18+void
19+swc_remove_binding(enum swc_binding_type type, uint32_t modifiers,
20+ uint32_t value);
21+
22 /**
23 * register a new pointer axis binding
24 *