mirror of
				https://github.com/swaywm/sway.git
				synced 2025-11-03 09:01:43 -05:00 
			
		
		
		
	Remove container_has_child
In all cases you can use container_has_ancestor with the arguments swapped, which is faster than container_has_child.
This commit is contained in:
		
							parent
							
								
									e474d87e42
								
							
						
					
					
						commit
						31844bf42b
					
				
					 3 changed files with 3 additions and 22 deletions
				
			
		| 
						 | 
					@ -256,12 +256,6 @@ void container_for_each_descendant_dfs(struct sway_container *container,
 | 
				
			||||||
bool container_has_ancestor(struct sway_container *container,
 | 
					bool container_has_ancestor(struct sway_container *container,
 | 
				
			||||||
		struct sway_container *ancestor);
 | 
							struct sway_container *ancestor);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Returns true if the given container is a child descendant of this container.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
bool container_has_child(struct sway_container *con,
 | 
					 | 
				
			||||||
		struct sway_container *child);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int container_count_descendants_of_type(struct sway_container *con,
 | 
					int container_count_descendants_of_type(struct sway_container *con,
 | 
				
			||||||
		enum sway_container_type type);
 | 
							enum sway_container_type type);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -145,14 +145,14 @@ static struct sway_container *seat_get_focus_by_type(struct sway_seat *seat,
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (container_has_child(container, current->container)) {
 | 
							if (container_has_ancestor(current->container, container)) {
 | 
				
			||||||
			if (only_tiling &&
 | 
								if (only_tiling &&
 | 
				
			||||||
					container_is_floating_or_child(current->container)) {
 | 
										container_is_floating_or_child(current->container)) {
 | 
				
			||||||
				continue;
 | 
									continue;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			return current->container;
 | 
								return current->container;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (floating && container_has_child(floating, current->container)) {
 | 
							if (floating && container_has_ancestor(current->container, floating)) {
 | 
				
			||||||
			return current->container;
 | 
								return current->container;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -190,7 +190,7 @@ static void handle_seat_container_destroy(struct wl_listener *listener,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bool set_focus =
 | 
						bool set_focus =
 | 
				
			||||||
		focus != NULL &&
 | 
							focus != NULL &&
 | 
				
			||||||
		(focus == con || container_has_child(con, focus)) &&
 | 
							(focus == con || container_has_ancestor(focus, con)) &&
 | 
				
			||||||
		con->type != C_WORKSPACE;
 | 
							con->type != C_WORKSPACE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	seat_container_destroy(seat_con);
 | 
						seat_container_destroy(seat_con);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -817,19 +817,6 @@ bool container_has_ancestor(struct sway_container *descendant,
 | 
				
			||||||
	return false;
 | 
						return false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static bool find_child_func(struct sway_container *con, void *data) {
 | 
					 | 
				
			||||||
	struct sway_container *child = data;
 | 
					 | 
				
			||||||
	return con == child;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool container_has_child(struct sway_container *con,
 | 
					 | 
				
			||||||
		struct sway_container *child) {
 | 
					 | 
				
			||||||
	if (con == NULL || con->type == C_VIEW) {
 | 
					 | 
				
			||||||
		return false;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return container_find(con, find_child_func, child);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int container_count_descendants_of_type(struct sway_container *con,
 | 
					int container_count_descendants_of_type(struct sway_container *con,
 | 
				
			||||||
		enum sway_container_type type) {
 | 
							enum sway_container_type type) {
 | 
				
			||||||
	int children = 0;
 | 
						int children = 0;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue