diff options
-rw-r--r-- | include/sway/container.h | 7 | ||||
-rw-r--r-- | sway/container.c | 4 | ||||
-rw-r--r-- | sway/ipc-json.c | 3 | ||||
-rw-r--r-- | sway/layout.c | 1 |
4 files changed, 13 insertions, 2 deletions
diff --git a/include/sway/container.h b/include/sway/container.h index 215c0b07..67b747a0 100644 --- a/include/sway/container.h +++ b/include/sway/container.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define _SWAY_CONTAINER_H | 2 | #define _SWAY_CONTAINER_H |
3 | #include <sys/types.h> | 3 | #include <sys/types.h> |
4 | #include <wlc/wlc.h> | 4 | #include <wlc/wlc.h> |
5 | #include <stdint.h> | ||
5 | 6 | ||
6 | #include "list.h" | 7 | #include "list.h" |
7 | 8 | ||
@@ -58,6 +59,12 @@ struct sway_container { | |||
58 | */ | 59 | */ |
59 | wlc_handle handle; | 60 | wlc_handle handle; |
60 | 61 | ||
62 | /** | ||
63 | * A unique ID to identify this container. Primarily used in the | ||
64 | * get_tree JSON output. | ||
65 | */ | ||
66 | size_t id; | ||
67 | |||
61 | enum swayc_types type; | 68 | enum swayc_types type; |
62 | enum swayc_layouts layout; | 69 | enum swayc_layouts layout; |
63 | enum swayc_layouts prev_layout; | 70 | enum swayc_layouts prev_layout; |
diff --git a/sway/container.c b/sway/container.c index 561dcba6..73b627ec 100644 --- a/sway/container.c +++ b/sway/container.c | |||
@@ -18,8 +18,12 @@ | |||
18 | #define ASSERT_NONNULL(PTR) \ | 18 | #define ASSERT_NONNULL(PTR) \ |
19 | sway_assert (PTR, #PTR "must be non-null") | 19 | sway_assert (PTR, #PTR "must be non-null") |
20 | 20 | ||
21 | |||
21 | static swayc_t *new_swayc(enum swayc_types type) { | 22 | static swayc_t *new_swayc(enum swayc_types type) { |
23 | // next id starts at 1 because 0 is assigned to root_container in layout.c | ||
24 | static size_t next_id = 1; | ||
22 | swayc_t *c = calloc(1, sizeof(swayc_t)); | 25 | swayc_t *c = calloc(1, sizeof(swayc_t)); |
26 | c->id = next_id++; | ||
23 | c->handle = -1; | 27 | c->handle = -1; |
24 | c->gaps = -1; | 28 | c->gaps = -1; |
25 | c->layout = L_NONE; | 29 | c->layout = L_NONE; |
diff --git a/sway/ipc-json.c b/sway/ipc-json.c index 1ca7f9ce..e08b3c60 100644 --- a/sway/ipc-json.c +++ b/sway/ipc-json.c | |||
@@ -161,7 +161,6 @@ static void ipc_json_describe_view(swayc_t *c, json_object *object) { | |||
161 | ipc_json_layout_description(c->parent->prev_layout) : "none"; | 161 | ipc_json_layout_description(c->parent->prev_layout) : "none"; |
162 | wlc_handle parent = wlc_view_get_parent(c->handle); | 162 | wlc_handle parent = wlc_view_get_parent(c->handle); |
163 | 163 | ||
164 | json_object_object_add(object, "id", json_object_new_int(c->handle)); | ||
165 | json_object_object_add(object, "type", json_object_new_string((c->is_floating) ? "floating_con" : "con")); | 164 | json_object_object_add(object, "type", json_object_new_string((c->is_floating) ? "floating_con" : "con")); |
166 | 165 | ||
167 | json_object_object_add(object, "scratchpad_state", | 166 | json_object_object_add(object, "scratchpad_state", |
@@ -211,7 +210,7 @@ json_object *ipc_json_describe_container(swayc_t *c) { | |||
211 | 210 | ||
212 | json_object *object = json_object_new_object(); | 211 | json_object *object = json_object_new_object(); |
213 | 212 | ||
214 | json_object_object_add(object, "id", json_object_new_int((uintptr_t)&c)); | 213 | json_object_object_add(object, "id", json_object_new_int((int)c->id)); |
215 | json_object_object_add(object, "name", (c->name) ? json_object_new_string(c->name) : NULL); | 214 | json_object_object_add(object, "name", (c->name) ? json_object_new_string(c->name) : NULL); |
216 | json_object_object_add(object, "rect", ipc_json_create_rect(c)); | 215 | json_object_object_add(object, "rect", ipc_json_create_rect(c)); |
217 | json_object_object_add(object, "visible", json_object_new_boolean(c->visible)); | 216 | json_object_object_add(object, "visible", json_object_new_boolean(c->visible)); |
diff --git a/sway/layout.c b/sway/layout.c index 7802c412..6012af66 100644 --- a/sway/layout.c +++ b/sway/layout.c | |||
@@ -22,6 +22,7 @@ int min_sane_h = 60; | |||
22 | int min_sane_w = 100; | 22 | int min_sane_w = 100; |
23 | 23 | ||
24 | void init_layout(void) { | 24 | void init_layout(void) { |
25 | root_container.id = 0; // normally assigned in new_swayc() | ||
25 | root_container.type = C_ROOT; | 26 | root_container.type = C_ROOT; |
26 | root_container.layout = L_NONE; | 27 | root_container.layout = L_NONE; |
27 | root_container.name = strdup("root"); | 28 | root_container.name = strdup("root"); |