|  |  |  | @ -582,6 +582,14 @@ static struct sway_workspace *select_workspace(struct sway_view *view) { | 
			
		
	
		
			
				
					|  |  |  |  | 	return NULL; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | static void update_ext_foreign_toplevel(struct sway_view *view) { | 
			
		
	
		
			
				
					|  |  |  |  | 	struct wlr_ext_foreign_toplevel_handle_v1_state toplevel_state = { | 
			
		
	
		
			
				
					|  |  |  |  | 		.app_id = view_get_app_id(view), | 
			
		
	
		
			
				
					|  |  |  |  | 		.title = view_get_title(view), | 
			
		
	
		
			
				
					|  |  |  |  | 	}; | 
			
		
	
		
			
				
					|  |  |  |  | 	wlr_ext_foreign_toplevel_handle_v1_update_state(view->ext_foreign_toplevel, &toplevel_state); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | static bool should_focus(struct sway_view *view) { | 
			
		
	
		
			
				
					|  |  |  |  | 	struct sway_seat *seat = input_manager_current_seat(); | 
			
		
	
		
			
				
					|  |  |  |  | 	struct sway_container *prev_con = seat_get_focused_container(seat); | 
			
		
	
	
		
			
				
					|  |  |  | @ -751,6 +759,15 @@ void view_map(struct sway_view *view, struct wlr_surface *wlr_surface, | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	struct wlr_ext_foreign_toplevel_handle_v1_state foreign_toplevel_state = { | 
			
		
	
		
			
				
					|  |  |  |  | 		.app_id = view_get_app_id(view), | 
			
		
	
		
			
				
					|  |  |  |  | 		.title = view_get_title(view), | 
			
		
	
		
			
				
					|  |  |  |  | 	}; | 
			
		
	
		
			
				
					|  |  |  |  | 	view->ext_foreign_toplevel = | 
			
		
	
		
			
				
					|  |  |  |  | 		wlr_ext_foreign_toplevel_handle_v1_create(server.foreign_toplevel_list, &foreign_toplevel_state); | 
			
		
	
		
			
				
					|  |  |  |  | 	wl_signal_add(&view->ext_foreign_toplevel->events.destroy, | 
			
		
	
		
			
				
					|  |  |  |  | 			&view->ext_foreign_destroy); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	view->foreign_toplevel = | 
			
		
	
		
			
				
					|  |  |  |  | 		wlr_foreign_toplevel_handle_v1_create(server.foreign_toplevel_manager); | 
			
		
	
		
			
				
					|  |  |  |  | 	view->foreign_activate_request.notify = handle_foreign_activate_request; | 
			
		
	
	
		
			
				
					|  |  |  | @ -828,6 +845,10 @@ void view_map(struct sway_view *view, struct wlr_surface *wlr_surface, | 
			
		
	
		
			
				
					|  |  |  |  | 		input_manager_set_focus(&view->container->node); | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	if (view->ext_foreign_toplevel) { | 
			
		
	
		
			
				
					|  |  |  |  | 		update_ext_foreign_toplevel(view); | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	const char *app_id; | 
			
		
	
		
			
				
					|  |  |  |  | 	const char *class; | 
			
		
	
		
			
				
					|  |  |  |  | 	if ((app_id = view_get_app_id(view)) != NULL) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -847,6 +868,11 @@ void view_unmap(struct sway_view *view) { | 
			
		
	
		
			
				
					|  |  |  |  | 		view->urgent_timer = NULL; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	if (view->ext_foreign_toplevel) { | 
			
		
	
		
			
				
					|  |  |  |  | 		wlr_ext_foreign_toplevel_handle_v1_destroy(view->ext_foreign_toplevel); | 
			
		
	
		
			
				
					|  |  |  |  | 		view->ext_foreign_toplevel = NULL; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	if (view->foreign_toplevel) { | 
			
		
	
		
			
				
					|  |  |  |  | 		wlr_foreign_toplevel_handle_v1_destroy(view->foreign_toplevel); | 
			
		
	
		
			
				
					|  |  |  |  | 		view->foreign_toplevel = NULL; | 
			
		
	
	
		
			
				
					|  |  |  | @ -1014,6 +1040,18 @@ static size_t parse_title_format(struct sway_view *view, char *buffer) { | 
			
		
	
		
			
				
					|  |  |  |  | 	return len; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void view_update_app_id(struct sway_view *view) { | 
			
		
	
		
			
				
					|  |  |  |  | 	const char *app_id = view_get_app_id(view); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	if (view->foreign_toplevel && app_id) { | 
			
		
	
		
			
				
					|  |  |  |  | 		wlr_foreign_toplevel_handle_v1_set_app_id(view->foreign_toplevel, app_id); | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	if (view->ext_foreign_toplevel) { | 
			
		
	
		
			
				
					|  |  |  |  | 		update_ext_foreign_toplevel(view); | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void view_update_title(struct sway_view *view, bool force) { | 
			
		
	
		
			
				
					|  |  |  |  | 	const char *title = view_get_title(view); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -1060,6 +1098,10 @@ void view_update_title(struct sway_view *view, bool force) { | 
			
		
	
		
			
				
					|  |  |  |  | 	if (view->foreign_toplevel && title) { | 
			
		
	
		
			
				
					|  |  |  |  | 		wlr_foreign_toplevel_handle_v1_set_title(view->foreign_toplevel, title); | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	if (view->ext_foreign_toplevel) { | 
			
		
	
		
			
				
					|  |  |  |  | 		update_ext_foreign_toplevel(view); | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | bool view_is_visible(struct sway_view *view) { | 
			
		
	
	
		
			
				
					|  |  |  | 
 |