mirror of
				https://github.com/swaywm/sway.git
				synced 2025-11-03 09:01:43 -05:00 
			
		
		
		
	Count descendant views for hide_edge_borders smart
This commit is contained in:
		
							parent
							
								
									3db7fc2bb2
								
							
						
					
					
						commit
						e3625d8f33
					
				
					 4 changed files with 22 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -187,6 +187,9 @@ bool container_has_anscestor(struct sway_container *container,
 | 
			
		|||
bool container_has_child(struct sway_container *con,
 | 
			
		||||
		struct sway_container *child);
 | 
			
		||||
 | 
			
		||||
int container_count_descendants_of_type(struct sway_container *con,
 | 
			
		||||
		enum sway_container_type type);
 | 
			
		||||
 | 
			
		||||
void container_create_notify(struct sway_container *container);
 | 
			
		||||
 | 
			
		||||
void container_damage_whole(struct sway_container *container);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -322,8 +322,8 @@ static void render_container_simple_border_normal(struct sway_output *output,
 | 
			
		|||
	struct wlr_box box;
 | 
			
		||||
	float color[4];
 | 
			
		||||
 | 
			
		||||
	struct sway_container *workspace = container_parent(con, C_WORKSPACE);
 | 
			
		||||
	int other_views = workspace->children->length - 1;
 | 
			
		||||
	struct sway_container *ws = container_parent(con, C_WORKSPACE);
 | 
			
		||||
	int other_views = container_count_descendants_of_type(ws, C_VIEW) - 1;
 | 
			
		||||
 | 
			
		||||
	if (config->hide_edge_borders != E_VERTICAL
 | 
			
		||||
			&& config->hide_edge_borders != E_BOTH
 | 
			
		||||
| 
						 | 
				
			
			@ -424,8 +424,8 @@ static void render_container_simple_border_pixel(struct sway_output *output,
 | 
			
		|||
	struct wlr_box box;
 | 
			
		||||
	float color[4];
 | 
			
		||||
 | 
			
		||||
	struct sway_container *workspace = container_parent(con, C_WORKSPACE);
 | 
			
		||||
	int other_views = workspace->children->length - 1;
 | 
			
		||||
	struct sway_container *ws = container_parent(con, C_WORKSPACE);
 | 
			
		||||
	int other_views = container_count_descendants_of_type(ws, C_VIEW) - 1;
 | 
			
		||||
 | 
			
		||||
	if (config->hide_edge_borders != E_VERTICAL
 | 
			
		||||
			&& config->hide_edge_borders != E_BOTH
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -547,6 +547,20 @@ bool container_has_child(struct sway_container *con,
 | 
			
		|||
	return container_find(con, find_child_func, child);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int container_count_descendants_of_type(struct sway_container *con,
 | 
			
		||||
		enum sway_container_type type) {
 | 
			
		||||
	int children = 0;
 | 
			
		||||
	if (con->type == type) {
 | 
			
		||||
		children++;
 | 
			
		||||
	} else if (con->children) {
 | 
			
		||||
		for (int i = 0; i < con->children->length; i++) {
 | 
			
		||||
			struct sway_container *child = con->children->items[i];
 | 
			
		||||
			children += container_count_descendants_of_type(child, type);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return children;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void container_damage_whole(struct sway_container *container) {
 | 
			
		||||
	for (int i = 0; i < root_container.children->length; ++i) {
 | 
			
		||||
		struct sway_container *cont = root_container.children->items[i];
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -101,7 +101,7 @@ void view_autoconfigure(struct sway_view *view) {
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	struct sway_container *ws = container_parent(view->swayc, C_WORKSPACE);
 | 
			
		||||
	int other_views = ws->children->length - 1;
 | 
			
		||||
	int other_views = container_count_descendants_of_type(ws, C_VIEW) - 1;
 | 
			
		||||
 | 
			
		||||
	double x, y, width, height;
 | 
			
		||||
	x = y = width = height = 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue