mirror of
				https://github.com/swaywm/sway.git
				synced 2025-11-03 09:01:43 -05:00 
			
		
		
		
	Handle output remove
This commit is contained in:
		
							parent
							
								
									a4619e98c4
								
							
						
					
					
						commit
						ec2fd6e5c0
					
				
					 2 changed files with 21 additions and 1 deletions
				
			
		| 
						 | 
					@ -123,5 +123,19 @@ void output_remove_notify(struct wl_listener *listener, void *data) {
 | 
				
			||||||
	struct sway_server *server = wl_container_of(listener, server, output_remove);
 | 
						struct sway_server *server = wl_container_of(listener, server, output_remove);
 | 
				
			||||||
	struct wlr_output *wlr_output = data;
 | 
						struct wlr_output *wlr_output = data;
 | 
				
			||||||
	sway_log(L_DEBUG, "Output %p %s removed", wlr_output, wlr_output->name);
 | 
						sway_log(L_DEBUG, "Output %p %s removed", wlr_output, wlr_output->name);
 | 
				
			||||||
	// TODO
 | 
					
 | 
				
			||||||
 | 
						swayc_t *output_container = NULL;
 | 
				
			||||||
 | 
						for (int i = 0 ; i < root_container.children->length; ++i) {
 | 
				
			||||||
 | 
							swayc_t *child = root_container.children->items[i];
 | 
				
			||||||
 | 
							if (child->type == C_OUTPUT &&
 | 
				
			||||||
 | 
									child->sway_output->wlr_output == wlr_output) {
 | 
				
			||||||
 | 
								output_container = child;
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if (!output_container) {
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						destroy_output(output_container);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,10 +23,16 @@ static void output_layout_change_notify(struct wl_listener *listener, void *data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (int i = 0 ; i < root_container.children->length; ++i) {
 | 
						for (int i = 0 ; i < root_container.children->length; ++i) {
 | 
				
			||||||
		swayc_t *output_container = root_container.children->items[i];
 | 
							swayc_t *output_container = root_container.children->items[i];
 | 
				
			||||||
 | 
							if (output_container->type != C_OUTPUT) {
 | 
				
			||||||
 | 
								continue;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		struct sway_output *output = output_container->sway_output;
 | 
							struct sway_output *output = output_container->sway_output;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		struct wlr_box *output_box = wlr_output_layout_get_box(
 | 
							struct wlr_box *output_box = wlr_output_layout_get_box(
 | 
				
			||||||
			root_container.sway_root->output_layout, output->wlr_output);
 | 
								root_container.sway_root->output_layout, output->wlr_output);
 | 
				
			||||||
 | 
							if (!output_box) {
 | 
				
			||||||
 | 
								continue;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		output_container->x = output_box->x;
 | 
							output_container->x = output_box->x;
 | 
				
			||||||
		output_container->y = output_box->y;
 | 
							output_container->y = output_box->y;
 | 
				
			||||||
		output_container->width = output_box->width;
 | 
							output_container->width = output_box->width;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue