mirror of
				https://github.com/swaywm/sway.git
				synced 2025-11-03 09:01:43 -05:00 
			
		
		
		
	Merge pull request #914 from zandrmartin/container-ids
add unique IDs to containers
This commit is contained in:
		
						commit
						a95ce5ce65
					
				
					 4 changed files with 13 additions and 2 deletions
				
			
		| 
						 | 
					@ -2,6 +2,7 @@
 | 
				
			||||||
#define _SWAY_CONTAINER_H
 | 
					#define _SWAY_CONTAINER_H
 | 
				
			||||||
#include <sys/types.h>
 | 
					#include <sys/types.h>
 | 
				
			||||||
#include <wlc/wlc.h>
 | 
					#include <wlc/wlc.h>
 | 
				
			||||||
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "list.h"
 | 
					#include "list.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -58,6 +59,12 @@ struct sway_container {
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	wlc_handle handle;
 | 
						wlc_handle handle;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * A unique ID to identify this container. Primarily used in the
 | 
				
			||||||
 | 
						 * get_tree JSON output.
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						size_t id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	enum swayc_types type;
 | 
						enum swayc_types type;
 | 
				
			||||||
	enum swayc_layouts layout;
 | 
						enum swayc_layouts layout;
 | 
				
			||||||
	enum swayc_layouts prev_layout;
 | 
						enum swayc_layouts prev_layout;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,8 +18,12 @@
 | 
				
			||||||
#define ASSERT_NONNULL(PTR) \
 | 
					#define ASSERT_NONNULL(PTR) \
 | 
				
			||||||
	sway_assert (PTR, #PTR "must be non-null")
 | 
						sway_assert (PTR, #PTR "must be non-null")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static swayc_t *new_swayc(enum swayc_types type) {
 | 
					static swayc_t *new_swayc(enum swayc_types type) {
 | 
				
			||||||
 | 
						// next id starts at 1 because 0 is assigned to root_container in layout.c
 | 
				
			||||||
 | 
						static size_t next_id = 1;
 | 
				
			||||||
	swayc_t *c = calloc(1, sizeof(swayc_t));
 | 
						swayc_t *c = calloc(1, sizeof(swayc_t));
 | 
				
			||||||
 | 
						c->id = next_id++;
 | 
				
			||||||
	c->handle = -1;
 | 
						c->handle = -1;
 | 
				
			||||||
	c->gaps = -1;
 | 
						c->gaps = -1;
 | 
				
			||||||
	c->layout = L_NONE;
 | 
						c->layout = L_NONE;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -161,7 +161,6 @@ static void ipc_json_describe_view(swayc_t *c, json_object *object) {
 | 
				
			||||||
		ipc_json_layout_description(c->parent->prev_layout) : "none";
 | 
							ipc_json_layout_description(c->parent->prev_layout) : "none";
 | 
				
			||||||
	wlc_handle parent = wlc_view_get_parent(c->handle);
 | 
						wlc_handle parent = wlc_view_get_parent(c->handle);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	json_object_object_add(object, "id", json_object_new_int(c->handle));
 | 
					 | 
				
			||||||
	json_object_object_add(object, "type", json_object_new_string((c->is_floating) ? "floating_con" : "con"));
 | 
						json_object_object_add(object, "type", json_object_new_string((c->is_floating) ? "floating_con" : "con"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	json_object_object_add(object, "scratchpad_state",
 | 
						json_object_object_add(object, "scratchpad_state",
 | 
				
			||||||
| 
						 | 
					@ -211,7 +210,7 @@ json_object *ipc_json_describe_container(swayc_t *c) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	json_object *object = json_object_new_object();
 | 
						json_object *object = json_object_new_object();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	json_object_object_add(object, "id", json_object_new_int((uintptr_t)&c));
 | 
						json_object_object_add(object, "id", json_object_new_int((int)c->id));
 | 
				
			||||||
	json_object_object_add(object, "name", (c->name) ? json_object_new_string(c->name) : NULL);
 | 
						json_object_object_add(object, "name", (c->name) ? json_object_new_string(c->name) : NULL);
 | 
				
			||||||
	json_object_object_add(object, "rect", ipc_json_create_rect(c));
 | 
						json_object_object_add(object, "rect", ipc_json_create_rect(c));
 | 
				
			||||||
	json_object_object_add(object, "visible", json_object_new_boolean(c->visible));
 | 
						json_object_object_add(object, "visible", json_object_new_boolean(c->visible));
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,6 +22,7 @@ int min_sane_h = 60;
 | 
				
			||||||
int min_sane_w = 100;
 | 
					int min_sane_w = 100;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void init_layout(void) {
 | 
					void init_layout(void) {
 | 
				
			||||||
 | 
						root_container.id = 0; // normally assigned in new_swayc()
 | 
				
			||||||
	root_container.type = C_ROOT;
 | 
						root_container.type = C_ROOT;
 | 
				
			||||||
	root_container.layout = L_NONE;
 | 
						root_container.layout = L_NONE;
 | 
				
			||||||
	root_container.name = strdup("root");
 | 
						root_container.name = strdup("root");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue