mirror of
				https://github.com/swaywm/sway.git
				synced 2025-11-03 09:01:43 -05:00 
			
		
		
		
	view: Recursively check mapped of view_child tree
A subsurface may be set to mapped without its parent.
This commit is contained in:
		
							parent
							
								
									2c917a8c34
								
							
						
					
					
						commit
						e7af5b6309
					
				
					 1 changed files with 12 additions and 2 deletions
				
			
		| 
						 | 
					@ -982,8 +982,18 @@ static void view_child_subsurface_create(struct sway_view_child *child,
 | 
				
			||||||
	view_child_damage(&subsurface->child, true);
 | 
						view_child_damage(&subsurface->child, true);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static bool view_child_is_mapped(struct sway_view_child *child) {
 | 
				
			||||||
 | 
						while (child) {
 | 
				
			||||||
 | 
							if (!child->mapped) {
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							child = child->parent;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void view_child_damage(struct sway_view_child *child, bool whole) {
 | 
					static void view_child_damage(struct sway_view_child *child, bool whole) {
 | 
				
			||||||
	if (!child || !child->mapped || !child->view || !child->view->container) {
 | 
						if (!child || !view_child_is_mapped(child) || !child->view || !child->view->container) {
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	int sx, sy;
 | 
						int sx, sy;
 | 
				
			||||||
| 
						 | 
					@ -1082,7 +1092,7 @@ void view_child_init(struct sway_view_child *child,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void view_child_destroy(struct sway_view_child *child) {
 | 
					void view_child_destroy(struct sway_view_child *child) {
 | 
				
			||||||
	if (child->mapped && child->view->container != NULL) {
 | 
						if (view_child_is_mapped(child) && child->view->container != NULL) {
 | 
				
			||||||
		view_child_damage(child, true);
 | 
							view_child_damage(child, true);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue