mirror of
				https://github.com/swaywm/sway.git
				synced 2025-11-03 09:01:43 -05:00 
			
		
		
		
	Don't call view_set_fullscreen on unmapped xwayland views
This commit is contained in:
		
							parent
							
								
									85ec700206
								
							
						
					
					
						commit
						3fd8897abe
					
				
					 2 changed files with 8 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -228,13 +228,15 @@ static void handle_request_fullscreen(struct wl_listener *listener, void *data)
 | 
			
		|||
	struct sway_xdg_shell_v6_view *xdg_shell_v6_view =
 | 
			
		||||
		wl_container_of(listener, xdg_shell_v6_view, request_fullscreen);
 | 
			
		||||
	struct wlr_xdg_toplevel_v6_set_fullscreen_event *e = data;
 | 
			
		||||
	struct wlr_xdg_surface_v6 *xdg_surface =
 | 
			
		||||
		xdg_shell_v6_view->view.wlr_xdg_surface_v6;
 | 
			
		||||
 | 
			
		||||
	if (!sway_assert(xdg_shell_v6_view->view.wlr_xdg_surface_v6->role == WLR_XDG_SURFACE_V6_ROLE_TOPLEVEL,
 | 
			
		||||
	if (!sway_assert(xdg_surface->role == WLR_XDG_SURFACE_V6_ROLE_TOPLEVEL,
 | 
			
		||||
				"xdg_shell_v6 requested fullscreen of surface with role %i",
 | 
			
		||||
				xdg_shell_v6_view->view.wlr_xdg_surface_v6->role)) {
 | 
			
		||||
				xdg_surface->role)) {
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	if (!xdg_shell_v6_view->view.wlr_xdg_surface_v6->mapped) {
 | 
			
		||||
	if (!xdg_surface->mapped) {
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -267,7 +269,6 @@ void handle_xdg_shell_v6_surface(struct wl_listener *listener, void *data) {
 | 
			
		|||
 | 
			
		||||
	// TODO:
 | 
			
		||||
	// - Look up pid and open on appropriate workspace
 | 
			
		||||
	// - Criteria
 | 
			
		||||
 | 
			
		||||
	xdg_shell_v6_view->map.notify = handle_map;
 | 
			
		||||
	wl_signal_add(&xdg_surface->events.map, &xdg_shell_v6_view->map);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -280,6 +280,9 @@ static void handle_request_fullscreen(struct wl_listener *listener, void *data)
 | 
			
		|||
		wl_container_of(listener, xwayland_view, request_fullscreen);
 | 
			
		||||
	struct sway_view *view = &xwayland_view->view;
 | 
			
		||||
	struct wlr_xwayland_surface *xsurface = view->wlr_xwayland_surface;
 | 
			
		||||
	if (!xsurface->mapped) {
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	view_set_fullscreen(view, xsurface->fullscreen);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -309,7 +312,6 @@ void handle_xwayland_surface(struct wl_listener *listener, void *data) {
 | 
			
		|||
 | 
			
		||||
	// TODO:
 | 
			
		||||
	// - Look up pid and open on appropriate workspace
 | 
			
		||||
	// - Criteria
 | 
			
		||||
 | 
			
		||||
	wl_signal_add(&xsurface->events.destroy, &xwayland_view->destroy);
 | 
			
		||||
	xwayland_view->destroy.notify = handle_destroy;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue