@@ -44,7 +44,8 @@ struct nk_cairo_context;
4444enum nk_xcb_event_type {
4545 NK_XCB_EVENT_PAINT = 0x02 ,
4646 NK_XCB_EVENT_RESIZED = 0x04 ,
47- NK_XCB_EVENT_STOP = 0x08
47+ NK_XCB_EVENT_STOP = 0x08 ,
48+ NK_XCB_CLIENT_MESSAGE = 0x10
4849};
4950
5051/* Xcb part: work on windows */
@@ -155,6 +156,7 @@ struct nk_xcb_context {
155156 int events ;
156157 xcb_intern_atom_reply_t * del_atom ;
157158 int width , height ;
159+ xcb_client_message_event_t last_client_message ;
158160};
159161
160162NK_API struct nk_xcb_context * nk_xcb_init (const char * title , int pos_x , int pos_y , int width , int height )
@@ -241,6 +243,7 @@ NK_API int nk_xcb_handle_event(struct nk_xcb_context *xcb_ctx, struct nk_context
241243 int events = 0 ;
242244 xcb_generic_event_t * event ;
243245 static int insert_toggle = 0 ;
246+ static const xcb_client_message_event_t EMPTY_CLIENT_MESSAGE ;
244247
245248#ifdef NK_XCB_MIN_FRAME_TIME
246249 struct timespec tp ;
@@ -251,6 +254,7 @@ NK_API int nk_xcb_handle_event(struct nk_xcb_context *xcb_ctx, struct nk_context
251254
252255 event = xcb_wait_for_event (xcb_ctx -> conn );
253256
257+ xcb_ctx -> last_client_message = EMPTY_CLIENT_MESSAGE ;
254258 nk_input_begin (nk_ctx );
255259 do {
256260 switch (XCB_EVENT_RESPONSE_TYPE (event )) {
@@ -424,6 +428,11 @@ NK_API int nk_xcb_handle_event(struct nk_xcb_context *xcb_ctx, struct nk_context
424428 {
425429 events = NK_XCB_EVENT_STOP ;
426430 }
431+ else
432+ {
433+ xcb_ctx -> last_client_message = * cm ;
434+ events = NK_XCB_CLIENT_MESSAGE ;
435+ }
427436 }
428437 break ;
429438 default :
0 commit comments