mirror of
				https://github.com/labwc/labwc.git
				synced 2025-10-29 05:40:24 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			81 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0-only */
 | |
| #ifndef LABWC_XWAYLAND_H
 | |
| #define LABWC_XWAYLAND_H
 | |
| #include "config.h"
 | |
| 
 | |
| #if HAVE_XWAYLAND
 | |
| #include "view.h"
 | |
| 
 | |
| struct wlr_compositor;
 | |
| struct wlr_output;
 | |
| struct wlr_output_layout;
 | |
| 
 | |
| struct xwayland_unmanaged {
 | |
| 	struct server *server;
 | |
| 	struct wlr_xwayland_surface *xwayland_surface;
 | |
| 	struct wlr_scene_node *node;
 | |
| 	struct wl_list link;
 | |
| 
 | |
| 	struct mappable mappable;
 | |
| 
 | |
| 	struct wl_listener associate;
 | |
| 	struct wl_listener dissociate;
 | |
| 	struct wl_listener grab_focus;
 | |
| 	struct wl_listener request_activate;
 | |
| 	struct wl_listener request_configure;
 | |
| /*	struct wl_listener request_fullscreen; */
 | |
| 	struct wl_listener set_geometry;
 | |
| 	struct wl_listener destroy;
 | |
| 	struct wl_listener set_override_redirect;
 | |
| 
 | |
| 	/*
 | |
| 	 * True if the surface has performed a keyboard grab. labwc
 | |
| 	 * honors keyboard grabs and will give the surface focus when
 | |
| 	 * it's mapped (which may occur slightly later) and on top.
 | |
| 	 */
 | |
| 	bool ever_grabbed_focus;
 | |
| };
 | |
| 
 | |
| struct xwayland_view {
 | |
| 	struct view base;
 | |
| 	struct wlr_xwayland_surface *xwayland_surface;
 | |
| 	bool focused_before_map;
 | |
| 
 | |
| 	/* Events unique to XWayland views */
 | |
| 	struct wl_listener associate;
 | |
| 	struct wl_listener dissociate;
 | |
| 	struct wl_listener request_activate;
 | |
| 	struct wl_listener request_configure;
 | |
| 	struct wl_listener set_class;
 | |
| 	struct wl_listener set_decorations;
 | |
| 	struct wl_listener set_override_redirect;
 | |
| 	struct wl_listener set_strut_partial;
 | |
| 	struct wl_listener set_window_type;
 | |
| 	struct wl_listener focus_in;
 | |
| 	struct wl_listener map_request;
 | |
| 
 | |
| 	/* Not (yet) implemented */
 | |
| /*	struct wl_listener set_role; */
 | |
| /*	struct wl_listener set_hints; */
 | |
| };
 | |
| 
 | |
| void xwayland_unmanaged_create(struct server *server,
 | |
| 	struct wlr_xwayland_surface *xsurface, bool mapped);
 | |
| 
 | |
| void xwayland_view_create(struct server *server,
 | |
| 	struct wlr_xwayland_surface *xsurface, bool mapped);
 | |
| 
 | |
| void xwayland_server_init(struct server *server,
 | |
| 	struct wlr_compositor *compositor);
 | |
| void xwayland_server_finish(struct server *server);
 | |
| 
 | |
| void xwayland_adjust_usable_area(struct view *view,
 | |
| 	struct wlr_output_layout *layout, struct wlr_output *output,
 | |
| 	struct wlr_box *usable);
 | |
| 
 | |
| void xwayland_update_workarea(struct server *server);
 | |
| 
 | |
| void xwayland_reset_cursor(struct server *server);
 | |
| 
 | |
| #endif /* HAVE_XWAYLAND */
 | |
| #endif /* LABWC_XWAYLAND_H */
 | 
