|  |  |  | @ -69,11 +69,11 @@ static struct sway_container *_container_destroy(struct sway_container *cont) { | 
			
		
	
		
			
				
					|  |  |  |  | 	if (cont->children != NULL) { | 
			
		
	
		
			
				
					|  |  |  |  | 		// remove children until there are no more, container_destroy calls
 | 
			
		
	
		
			
				
					|  |  |  |  | 		// container_remove_child, which removes child from this container
 | 
			
		
	
		
			
				
					|  |  |  |  | 		while (cont->children->length != 0) { | 
			
		
	
		
			
				
					|  |  |  |  | 			container_destroy(cont->children->items[0]); | 
			
		
	
		
			
				
					|  |  |  |  | 		while (cont->children != NULL && cont->children->length != 0) { | 
			
		
	
		
			
				
					|  |  |  |  | 			struct sway_container *child = cont->children->items[0]; | 
			
		
	
		
			
				
					|  |  |  |  | 			container_remove_child(child); | 
			
		
	
		
			
				
					|  |  |  |  | 			container_destroy(child); | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 		list_free(cont->children); | 
			
		
	
		
			
				
					|  |  |  |  | 		cont->children = NULL; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 	if (cont->marks) { | 
			
		
	
		
			
				
					|  |  |  |  | 		list_foreach(cont->marks, free); | 
			
		
	
	
		
			
				
					|  |  |  | @ -85,13 +85,17 @@ static struct sway_container *_container_destroy(struct sway_container *cont) { | 
			
		
	
		
			
				
					|  |  |  |  | 	if (cont->name) { | 
			
		
	
		
			
				
					|  |  |  |  | 		free(cont->name); | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 	list_free(cont->children); | 
			
		
	
		
			
				
					|  |  |  |  | 	cont->children = NULL; | 
			
		
	
		
			
				
					|  |  |  |  | 	free(cont); | 
			
		
	
		
			
				
					|  |  |  |  | 	return parent; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | struct sway_container *container_destroy(struct sway_container *cont) { | 
			
		
	
		
			
				
					|  |  |  |  | 	cont = _container_destroy(cont); | 
			
		
	
		
			
				
					|  |  |  |  | 	return container_reap_empty(cont->parent); | 
			
		
	
		
			
				
					|  |  |  |  | 	struct sway_container *parent = _container_destroy(cont); | 
			
		
	
		
			
				
					|  |  |  |  | 	parent = container_reap_empty(parent); | 
			
		
	
		
			
				
					|  |  |  |  | 	arrange_windows(&root_container, -1, -1); | 
			
		
	
		
			
				
					|  |  |  |  | 	return parent; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | struct sway_container *container_output_create( | 
			
		
	
	
		
			
				
					|  |  |  | @ -409,7 +413,8 @@ bool find_child_func(struct sway_container *con, void *data) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | bool container_has_child(struct sway_container *con, | 
			
		
	
		
			
				
					|  |  |  |  | 		struct sway_container *child) { | 
			
		
	
		
			
				
					|  |  |  |  | 	if (child->type == C_VIEW || child->children->length == 0) { | 
			
		
	
		
			
				
					|  |  |  |  | 	if (child == NULL || child->type == C_VIEW || | 
			
		
	
		
			
				
					|  |  |  |  | 			child->children->length == 0) { | 
			
		
	
		
			
				
					|  |  |  |  | 		return false; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 	return container_find(con, find_child_func, child); | 
			
		
	
	
		
			
				
					|  |  |  | 
 |