mirror of
				https://github.com/swaywm/sway.git
				synced 2025-11-03 09:01:43 -05:00 
			
		
		
		
	Merge pull request #1869 from emersion/xwayland-ignore-fullscreen-unmapped
Don't call view_set_fullscreen on unmapped xwayland views
This commit is contained in:
		
						commit
						950c451f30
					
				
					 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 =
 | 
						struct sway_xdg_shell_v6_view *xdg_shell_v6_view =
 | 
				
			||||||
		wl_container_of(listener, xdg_shell_v6_view, request_fullscreen);
 | 
							wl_container_of(listener, xdg_shell_v6_view, request_fullscreen);
 | 
				
			||||||
	struct wlr_xdg_toplevel_v6_set_fullscreen_event *e = data;
 | 
						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 requested fullscreen of surface with role %i",
 | 
				
			||||||
				xdg_shell_v6_view->view.wlr_xdg_surface_v6->role)) {
 | 
									xdg_surface->role)) {
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (!xdg_shell_v6_view->view.wlr_xdg_surface_v6->mapped) {
 | 
						if (!xdg_surface->mapped) {
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -267,7 +269,6 @@ void handle_xdg_shell_v6_surface(struct wl_listener *listener, void *data) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// TODO:
 | 
						// TODO:
 | 
				
			||||||
	// - Look up pid and open on appropriate workspace
 | 
						// - Look up pid and open on appropriate workspace
 | 
				
			||||||
	// - Criteria
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	xdg_shell_v6_view->map.notify = handle_map;
 | 
						xdg_shell_v6_view->map.notify = handle_map;
 | 
				
			||||||
	wl_signal_add(&xdg_surface->events.map, &xdg_shell_v6_view->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);
 | 
							wl_container_of(listener, xwayland_view, request_fullscreen);
 | 
				
			||||||
	struct sway_view *view = &xwayland_view->view;
 | 
						struct sway_view *view = &xwayland_view->view;
 | 
				
			||||||
	struct wlr_xwayland_surface *xsurface = view->wlr_xwayland_surface;
 | 
						struct wlr_xwayland_surface *xsurface = view->wlr_xwayland_surface;
 | 
				
			||||||
 | 
						if (!xsurface->mapped) {
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	view_set_fullscreen(view, xsurface->fullscreen);
 | 
						view_set_fullscreen(view, xsurface->fullscreen);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -309,7 +312,6 @@ void handle_xwayland_surface(struct wl_listener *listener, void *data) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// TODO:
 | 
						// TODO:
 | 
				
			||||||
	// - Look up pid and open on appropriate workspace
 | 
						// - Look up pid and open on appropriate workspace
 | 
				
			||||||
	// - Criteria
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wl_signal_add(&xsurface->events.destroy, &xwayland_view->destroy);
 | 
						wl_signal_add(&xsurface->events.destroy, &xwayland_view->destroy);
 | 
				
			||||||
	xwayland_view->destroy.notify = handle_destroy;
 | 
						xwayland_view->destroy.notify = handle_destroy;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue