aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2016-09-27 14:27:29 -0400
committerLibravatar GitHub <noreply@github.com>2016-09-27 14:27:29 -0400
commita95ce5ce6575ac68a6af2c6c4cbb001be5799737 (patch)
tree938fc104869c80c036944eca7eb03402e3d5e471
parentMerge pull request #915 from RyanDwyer/implement-workspace-number-default (diff)
parentadd unique IDs to containers (diff)
downloadsway-a95ce5ce6575ac68a6af2c6c4cbb001be5799737.tar.gz
sway-a95ce5ce6575ac68a6af2c6c4cbb001be5799737.tar.zst
sway-a95ce5ce6575ac68a6af2c6c4cbb001be5799737.zip
Merge pull request #914 from zandrmartin/container-ids
add unique IDs to containers
-rw-r--r--include/sway/container.h7
-rw-r--r--sway/container.c4
-rw-r--r--sway/ipc-json.c3
-rw-r--r--sway/layout.c1
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
21static swayc_t *new_swayc(enum swayc_types type) { 22static 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;
22int min_sane_w = 100; 22int min_sane_w = 100;
23 23
24void init_layout(void) { 24void 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");