|  |  | @ -1,6 +1,7 @@ | 
			
		
	
		
		
			
				
					
					|  |  |  | #ifndef _POSIX_C_SOURCE |  |  |  | #ifndef _POSIX_C_SOURCE | 
			
		
	
		
		
			
				
					
					|  |  |  | #define _POSIX_C_SOURCE 200809L |  |  |  | #define _POSIX_C_SOURCE 200809L | 
			
		
	
		
		
			
				
					
					|  |  |  | #endif |  |  |  | #endif | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #include <assert.h> | 
			
		
	
		
		
			
				
					
					|  |  |  | #include <stdlib.h> |  |  |  | #include <stdlib.h> | 
			
		
	
		
		
			
				
					
					|  |  |  | #include <unistd.h> |  |  |  | #include <unistd.h> | 
			
		
	
		
		
			
				
					
					|  |  |  | #include <wlr/config.h> |  |  |  | #include <wlr/config.h> | 
			
		
	
	
		
		
			
				
					|  |  | @ -58,6 +59,18 @@ const char *atom_map[ATOM_LAST] = { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	"_NET_WM_WINDOW_TYPE_COMBO", |  |  |  | 	"_NET_WM_WINDOW_TYPE_COMBO", | 
			
		
	
		
		
			
				
					
					|  |  |  | }; |  |  |  | }; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | const char *wlr_xwayland_surface_role = "wlr_xwayland_surface"; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | bool wlr_surface_is_xwayland_surface(struct wlr_surface *surface) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	return strcmp(surface->role, wlr_xwayland_surface_role) == 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | struct wlr_xwayland_surface *wlr_xwayland_surface_from_wlr_surface( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		struct wlr_surface *surface) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	assert(wlr_surface_is_xwayland_surface(surface)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	return (struct wlr_xwayland_surface *)surface->role_data; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | /* General helpers */ |  |  |  | /* General helpers */ | 
			
		
	
		
		
			
				
					
					|  |  |  | // TODO: replace this with hash table?
 |  |  |  | // TODO: replace this with hash table?
 | 
			
		
	
		
		
			
				
					
					|  |  |  | static struct wlr_xwayland_surface *lookup_surface(struct wlr_xwm *xwm, |  |  |  | static struct wlr_xwayland_surface *lookup_surface(struct wlr_xwm *xwm, | 
			
		
	
	
		
		
			
				
					|  |  | @ -574,6 +587,7 @@ static void xwm_map_shell_surface(struct wlr_xwm *xwm, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		read_surface_property(xwm, xsurface, props[i]); |  |  |  | 		read_surface_property(xwm, xsurface, props[i]); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	wlr_surface_set_role(xsurface->surface, wlr_xwayland_surface_role, NULL, 0); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	wlr_surface_set_role_committed(xsurface->surface, handle_surface_commit, |  |  |  | 	wlr_surface_set_role_committed(xsurface->surface, handle_surface_commit, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		xsurface); |  |  |  | 		xsurface); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |