mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-11-03 09:01:40 -05:00 
			
		
		
		
	xwm: user custom event handler
This commit is contained in:
		
							parent
							
								
									96f09c7492
								
							
						
					
					
						commit
						ea4b871e16
					
				
					 5 changed files with 16 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -32,6 +32,13 @@ struct wlr_xwayland {
 | 
			
		|||
		struct wl_signal new_surface;
 | 
			
		||||
	} events;
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Add a custom event handler to xwayland. Return 1 if the event was
 | 
			
		||||
	 * handled or 0 to use the default wlr-xwayland handler. wlr-xwayland will
 | 
			
		||||
	 * free the event.
 | 
			
		||||
	 */
 | 
			
		||||
	int (*user_event_handler)(struct wlr_xwm *xwm, xcb_generic_event_t *event);
 | 
			
		||||
 | 
			
		||||
	void *data;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -87,7 +87,7 @@ if get_option('enable_xwayland')
 | 
			
		|||
	wlr_parts += [lib_wlr_xwayland]
 | 
			
		||||
	conf_data.set('WLR_HAS_XWAYLAND', true)
 | 
			
		||||
else
 | 
			
		||||
	exclude_files += ['xwayland.h']
 | 
			
		||||
	exclude_files += ['xwayland.h', 'xwm.h']
 | 
			
		||||
endif
 | 
			
		||||
configure_file(output: 'config.h', install_dir: 'include/wlr', configuration: conf_data)
 | 
			
		||||
install_subdir('include/wlr', install_dir: 'include', exclude_files: exclude_files)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,7 +19,7 @@
 | 
			
		|||
#include "wlr/util/log.h"
 | 
			
		||||
#include "wlr/xwayland.h"
 | 
			
		||||
#include "sockets.h"
 | 
			
		||||
#include "xwm.h"
 | 
			
		||||
#include "wlr/xwm.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __FreeBSD__
 | 
			
		||||
static inline int clearenv(void) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,7 @@
 | 
			
		|||
#include "wlr/types/wlr_surface.h"
 | 
			
		||||
#include "wlr/xwayland.h"
 | 
			
		||||
#include "wlr/xcursor.h"
 | 
			
		||||
#include "xwm.h"
 | 
			
		||||
#include "wlr/xwm.h"
 | 
			
		||||
 | 
			
		||||
#ifdef HAS_XCB_ICCCM
 | 
			
		||||
	#include <xcb/xcb_icccm.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -938,6 +938,12 @@ static int x11_event_handler(int fd, uint32_t mask, void *data) {
 | 
			
		|||
 | 
			
		||||
	while ((event = xcb_poll_for_event(xwm->xcb_conn))) {
 | 
			
		||||
		count++;
 | 
			
		||||
 | 
			
		||||
		if (xwm->xwayland->user_event_handler &&
 | 
			
		||||
				xwm->xwayland->user_event_handler(xwm, event)) {
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		switch (event->response_type & XCB_EVENT_RESPONSE_TYPE_MASK) {
 | 
			
		||||
		case XCB_CREATE_NOTIFY:
 | 
			
		||||
			xwm_handle_create_notify(xwm, (xcb_create_notify_event_t *)event);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue