|  |  | @ -615,9 +615,36 @@ static void handle_configure_notify(struct wlr_xwm *xwm, | 
			
		
	
		
		
			
				
					
					|  |  |  | 	xsurface->height = ev->height; |  |  |  | 	xsurface->height = ev->height; | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #define ICCCM_WITHDRAWN_STATE	0 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #define ICCCM_NORMAL_STATE	1 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #define ICCCM_ICONIC_STATE	3 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | static void xsurface_set_wm_state(struct wlr_xwayland_surface *xsurface, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		int32_t state) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	struct wlr_xwm *xwm = xsurface->xwm; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	uint32_t property[2]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	property[0] = state; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	property[1] = XCB_WINDOW_NONE; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	xcb_change_property(xwm->xcb_conn, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		XCB_PROP_MODE_REPLACE, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		xsurface->window_id, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		xwm->atoms[NET_WM_STATE], | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		xwm->atoms[NET_WM_STATE], | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		32, // format
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		2, property); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | static void handle_map_request(struct wlr_xwm *xwm, |  |  |  | static void handle_map_request(struct wlr_xwm *xwm, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		xcb_map_request_event_t *ev) { |  |  |  | 		xcb_map_request_event_t *ev) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	wlr_log(L_DEBUG, "XCB_MAP_REQUEST (%u)", ev->window); |  |  |  | 	wlr_log(L_DEBUG, "XCB_MAP_REQUEST (%u)", ev->window); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	struct wlr_xwayland_surface *xsurface = lookup_surface(xwm, ev->window); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	if (!xsurface) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		return; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	xsurface_set_wm_state(xsurface, ICCCM_NORMAL_STATE); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	xcb_map_window(xwm->xcb_conn, ev->window); |  |  |  | 	xcb_map_window(xwm->xcb_conn, ev->window); | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -651,6 +678,8 @@ static void handle_unmap_notify(struct wlr_xwm *xwm, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		xsurface->mapped = false; |  |  |  | 		xsurface->mapped = false; | 
			
		
	
		
		
			
				
					
					|  |  |  | 		wl_signal_emit(&xsurface->events.unmap_notify, xsurface); |  |  |  | 		wl_signal_emit(&xsurface->events.unmap_notify, xsurface); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	xsurface_set_wm_state(xsurface, ICCCM_WITHDRAWN_STATE); | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | static void handle_property_notify(struct wlr_xwm *xwm, |  |  |  | static void handle_property_notify(struct wlr_xwm *xwm, | 
			
		
	
	
		
		
			
				
					|  |  | 
 |