mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-10-29 05:40:12 -04:00 
			
		
		
		
	xwayland: add _NET_WM_WINDOW_TYPE_MENU support
This commit is contained in:
		
							parent
							
								
									bef5c1fd56
								
							
						
					
					
						commit
						c55ad11d96
					
				
					 3 changed files with 26 additions and 21 deletions
				
			
		|  | @ -53,12 +53,14 @@ enum atom_name { | ||||||
| 	TEXT, | 	TEXT, | ||||||
| 	TIMESTAMP, | 	TIMESTAMP, | ||||||
| 	DELETE, | 	DELETE, | ||||||
|  | 	NET_WM_WINDOW_TYPE_NORMAL, | ||||||
| 	NET_WM_WINDOW_TYPE_UTILITY, | 	NET_WM_WINDOW_TYPE_UTILITY, | ||||||
| 	NET_WM_WINDOW_TYPE_TOOLTIP, | 	NET_WM_WINDOW_TYPE_TOOLTIP, | ||||||
| 	NET_WM_WINDOW_TYPE_DND, | 	NET_WM_WINDOW_TYPE_DND, | ||||||
| 	NET_WM_WINDOW_TYPE_DROPDOWN_MENU, | 	NET_WM_WINDOW_TYPE_DROPDOWN_MENU, | ||||||
| 	NET_WM_WINDOW_TYPE_POPUP_MENU, | 	NET_WM_WINDOW_TYPE_POPUP_MENU, | ||||||
| 	NET_WM_WINDOW_TYPE_COMBO, | 	NET_WM_WINDOW_TYPE_COMBO, | ||||||
|  | 	NET_WM_WINDOW_TYPE_MENU, | ||||||
| 	DND_SELECTION, | 	DND_SELECTION, | ||||||
| 	DND_AWARE, | 	DND_AWARE, | ||||||
| 	DND_STATUS, | 	DND_STATUS, | ||||||
|  |  | ||||||
|  | @ -405,24 +405,3 @@ void wlr_xwayland_set_seat(struct wlr_xwayland *xwayland, | ||||||
| 	xwayland->seat_destroy.notify = wlr_xwayland_handle_seat_destroy; | 	xwayland->seat_destroy.notify = wlr_xwayland_handle_seat_destroy; | ||||||
| 	wl_signal_add(&seat->events.destroy, &xwayland->seat_destroy); | 	wl_signal_add(&seat->events.destroy, &xwayland->seat_destroy); | ||||||
| } | } | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| bool wlr_xwayland_surface_is_unmanaged(const struct wlr_xwayland_surface *surface) { |  | ||||||
| 	static enum atom_name needles[] = { |  | ||||||
| 		NET_WM_WINDOW_TYPE_UTILITY, |  | ||||||
| 		NET_WM_WINDOW_TYPE_TOOLTIP, |  | ||||||
| 		NET_WM_WINDOW_TYPE_DND, |  | ||||||
| 		NET_WM_WINDOW_TYPE_DROPDOWN_MENU, |  | ||||||
| 		NET_WM_WINDOW_TYPE_POPUP_MENU, |  | ||||||
| 		NET_WM_WINDOW_TYPE_COMBO, |  | ||||||
| 	}; |  | ||||||
| 
 |  | ||||||
| 	for (size_t i = 0; i < sizeof(needles) / sizeof(needles[0]); ++i) { |  | ||||||
| 		if (xwm_atoms_contains(surface->xwm, surface->window_type, |  | ||||||
| 				surface->window_type_len, needles[i])) { |  | ||||||
| 			return true; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	return false; |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  | @ -52,12 +52,14 @@ const char *atom_map[ATOM_LAST] = { | ||||||
| 	"TEXT", | 	"TEXT", | ||||||
| 	"TIMESTAMP", | 	"TIMESTAMP", | ||||||
| 	"DELETE", | 	"DELETE", | ||||||
|  | 	"_NET_WM_WINDOW_TYPE_NORMAL", | ||||||
| 	"_NET_WM_WINDOW_TYPE_UTILITY", | 	"_NET_WM_WINDOW_TYPE_UTILITY", | ||||||
| 	"_NET_WM_WINDOW_TYPE_TOOLTIP", | 	"_NET_WM_WINDOW_TYPE_TOOLTIP", | ||||||
| 	"_NET_WM_WINDOW_TYPE_DND", | 	"_NET_WM_WINDOW_TYPE_DND", | ||||||
| 	"_NET_WM_WINDOW_TYPE_DROPDOWN_MENU", | 	"_NET_WM_WINDOW_TYPE_DROPDOWN_MENU", | ||||||
| 	"_NET_WM_WINDOW_TYPE_POPUP_MENU", | 	"_NET_WM_WINDOW_TYPE_POPUP_MENU", | ||||||
| 	"_NET_WM_WINDOW_TYPE_COMBO", | 	"_NET_WM_WINDOW_TYPE_COMBO", | ||||||
|  | 	"_NET_WM_WINDOW_TYPE_MENU", | ||||||
| 	"XdndSelection", | 	"XdndSelection", | ||||||
| 	"XdndAware", | 	"XdndAware", | ||||||
| 	"XdndStatus", | 	"XdndStatus", | ||||||
|  | @ -1575,3 +1577,25 @@ bool xwm_atoms_contains(struct wlr_xwm *xwm, xcb_atom_t *atoms, | ||||||
| 
 | 
 | ||||||
| 	return false; | 	return false; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | bool wlr_xwayland_surface_is_unmanaged( | ||||||
|  | 		const struct wlr_xwayland_surface *surface) { | ||||||
|  | 	static enum atom_name needles[] = { | ||||||
|  | 		NET_WM_WINDOW_TYPE_COMBO, | ||||||
|  | 		NET_WM_WINDOW_TYPE_DND, | ||||||
|  | 		NET_WM_WINDOW_TYPE_DROPDOWN_MENU, | ||||||
|  | 		NET_WM_WINDOW_TYPE_MENU, | ||||||
|  | 		NET_WM_WINDOW_TYPE_POPUP_MENU, | ||||||
|  | 		NET_WM_WINDOW_TYPE_TOOLTIP, | ||||||
|  | 		NET_WM_WINDOW_TYPE_UTILITY, | ||||||
|  | 	}; | ||||||
|  | 
 | ||||||
|  | 	for (size_t i = 0; i < sizeof(needles) / sizeof(needles[0]); ++i) { | ||||||
|  | 		if (xwm_atoms_contains(surface->xwm, surface->window_type, | ||||||
|  | 				surface->window_type_len, needles[i])) { | ||||||
|  | 			return true; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return false; | ||||||
|  | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 emersion
						emersion