|  |  | @ -92,6 +92,10 @@ static void example_set_focused_surface(struct sample_state *sample, | 
			
		
	
		
		
			
				
					
					|  |  |  | 	struct wlr_xdg_client_v6 *xdg_client; |  |  |  | 	struct wlr_xdg_client_v6 *xdg_client; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	wl_list_for_each(xdg_client, &sample->xdg_shell->clients, link) { |  |  |  | 	wl_list_for_each(xdg_client, &sample->xdg_shell->clients, link) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		wl_list_for_each(xdg_surface, &xdg_client->surfaces, link) { |  |  |  | 		wl_list_for_each(xdg_surface, &xdg_client->surfaces, link) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			if (!xdg_surface->configured || | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					xdg_surface->role != WLR_XDG_SURFACE_V6_ROLE_TOPLEVEL) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				continue; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  | 			wlr_xdg_toplevel_v6_set_activated(xdg_surface, |  |  |  | 			wlr_xdg_toplevel_v6_set_activated(xdg_surface, | 
			
		
	
		
		
			
				
					
					|  |  |  | 				xdg_surface == surface); |  |  |  | 				xdg_surface == surface); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  | 		} | 
			
		
	
	
		
		
			
				
					|  |  | @ -246,11 +250,13 @@ static void handle_output_frame(struct output_state *output, | 
			
		
	
		
		
			
				
					
					|  |  |  | 	struct wlr_xdg_client_v6 *xdg_client; |  |  |  | 	struct wlr_xdg_client_v6 *xdg_client; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	wl_list_for_each(xdg_client, &sample->xdg_shell->clients, link) { |  |  |  | 	wl_list_for_each(xdg_client, &sample->xdg_shell->clients, link) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		wl_list_for_each(xdg_surface, &xdg_client->surfaces, link) { |  |  |  | 		wl_list_for_each(xdg_surface, &xdg_client->surfaces, link) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 			if (xdg_surface->role == WLR_XDG_SURFACE_V6_ROLE_NONE) { |  |  |  | 			if (!xdg_surface->configured) { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 				continue; |  |  |  | 				continue; | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			struct example_xdg_surface_v6 *esurface = xdg_surface->data; |  |  |  | 			struct example_xdg_surface_v6 *esurface = xdg_surface->data; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			assert(esurface); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			int width = xdg_surface->surface->current.buffer_width; |  |  |  | 			int width = xdg_surface->surface->current.buffer_width; | 
			
		
	
		
		
			
				
					
					|  |  |  | 			int height = xdg_surface->surface->current.buffer_height; |  |  |  | 			int height = xdg_surface->surface->current.buffer_height; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -337,6 +343,10 @@ static struct wlr_xdg_surface_v6 *example_xdg_surface_at( | 
			
		
	
		
		
			
				
					
					|  |  |  | 	struct wlr_xdg_client_v6 *xdg_client; |  |  |  | 	struct wlr_xdg_client_v6 *xdg_client; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	wl_list_for_each(xdg_client, &sample->xdg_shell->clients, link) { |  |  |  | 	wl_list_for_each(xdg_client, &sample->xdg_shell->clients, link) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		wl_list_for_each(xdg_surface, &xdg_client->surfaces, link) { |  |  |  | 		wl_list_for_each(xdg_surface, &xdg_client->surfaces, link) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			if (!xdg_surface->configured) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				continue; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			struct example_xdg_surface_v6 *esurface = xdg_surface->data; |  |  |  | 			struct example_xdg_surface_v6 *esurface = xdg_surface->data; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			double window_x = esurface->position.lx + xdg_surface->geometry->x; |  |  |  | 			double window_x = esurface->position.lx + xdg_surface->geometry->x; | 
			
		
	
	
		
		
			
				
					|  |  | 
 |