aboutsummaryrefslogtreecommitdiffstats
path: root/oldXMenu
diff options
context:
space:
mode:
authorPo Lu2022-03-07 21:36:25 +0800
committerPo Lu2022-03-07 21:36:25 +0800
commit418e5da5d308b4e440f28545eb139211066b48a4 (patch)
tree6061adb42a47040a10f8d36854f6e924c4202ac6 /oldXMenu
parent8a7df412a640c8b2334b78ec0ca872a6d11e8b0e (diff)
downloademacs-418e5da5d308b4e440f28545eb139211066b48a4.tar.gz
emacs-418e5da5d308b4e440f28545eb139211066b48a4.zip
Correctly handle exposure in oldXMenu
* oldXMenu/Activate.c (XMenuActivate): Call set expose_func if no pane was found. (XMenuActivateSetExposeFunction): New function. * oldXMenu/XMenu.h: New typedef `expose_func'. Update prototypes. * src/xmenu.c (x_menu_expose_event): New function. (x_menu_show): Set expose event handler. * src/xterm.c (x_dispatch_event): Make `static' only on GTK. * src/xterm.h: Expose `x_dispatch_event' on no-toolkit builds.
Diffstat (limited to 'oldXMenu')
-rw-r--r--oldXMenu/Activate.c10
-rw-r--r--oldXMenu/XMenu.h2
2 files changed, 12 insertions, 0 deletions
diff --git a/oldXMenu/Activate.c b/oldXMenu/Activate.c
index 781c05bd026..e679c2ffed6 100644
--- a/oldXMenu/Activate.c
+++ b/oldXMenu/Activate.c
@@ -122,6 +122,7 @@ int x_menu_grab_keyboard = 1;
122static Wait_func wait_func; 122static Wait_func wait_func;
123static void* wait_data; 123static void* wait_data;
124static Translate_func translate_func = NULL; 124static Translate_func translate_func = NULL;
125static Expose_func expose_func = NULL;
125 126
126void 127void
127XMenuActivateSetWaitFunction (Wait_func func, void *data) 128XMenuActivateSetWaitFunction (Wait_func func, void *data)
@@ -136,6 +137,12 @@ XMenuActivateSetTranslateFunction (Translate_func func)
136 translate_func = func; 137 translate_func = func;
137} 138}
138 139
140void
141XMenuActivateSetExposeFunction (Expose_func func)
142{
143 expose_func = func;
144}
145
139int 146int
140XMenuActivate( 147XMenuActivate(
141 register Display *display, /* Display to put menu on. */ 148 register Display *display, /* Display to put menu on. */
@@ -339,6 +346,9 @@ XMenuActivate(
339 feq = feq_tmp; 346 feq = feq_tmp;
340 } 347 }
341 else if (_XMEventHandler) (*_XMEventHandler)(&event); 348 else if (_XMEventHandler) (*_XMEventHandler)(&event);
349
350 if (expose_func)
351 expose_func (&event);
342 break; 352 break;
343 } 353 }
344 if (event_xmp->activated) { 354 if (event_xmp->activated) {
diff --git a/oldXMenu/XMenu.h b/oldXMenu/XMenu.h
index 2eee18a3844..54061235ae7 100644
--- a/oldXMenu/XMenu.h
+++ b/oldXMenu/XMenu.h
@@ -259,6 +259,7 @@ typedef void (*Wait_func)(void*);
259 XPutBackEvent on an equivalent artificial core event on any 259 XPutBackEvent on an equivalent artificial core event on any
260 function it wants to translate. */ 260 function it wants to translate. */
261typedef void (*Translate_func)(XEvent *); 261typedef void (*Translate_func)(XEvent *);
262typedef void (*Expose_func)(XEvent *);
262 263
263/* 264/*
264 * XMenu library routine declarations. 265 * XMenu library routine declarations.
@@ -280,6 +281,7 @@ int XMenuLocate(Display *display, XMenu *menu, int p_num, int s_num, int x_pos,
280void XMenuSetFreeze(XMenu *menu, int freeze); 281void XMenuSetFreeze(XMenu *menu, int freeze);
281void XMenuActivateSetWaitFunction(Wait_func func, void *data); 282void XMenuActivateSetWaitFunction(Wait_func func, void *data);
282void XMenuActivateSetTranslateFunction(Translate_func func); 283void XMenuActivateSetTranslateFunction(Translate_func func);
284void XMenuActivateSetExposeFunction(Expose_func func);
283int XMenuActivate(Display *display, XMenu *menu, int *p_num, int *s_num, int x_pos, int y_pos, unsigned int event_mask, char **data, void (*help_callback) (char const *, int, int)); 285int XMenuActivate(Display *display, XMenu *menu, int *p_num, int *s_num, int x_pos, int y_pos, unsigned int event_mask, char **data, void (*help_callback) (char const *, int, int));
284char *XMenuPost(Display *display, XMenu *menu, int *p_num, int *s_num, int x_pos, int y_pos, int event_mask); 286char *XMenuPost(Display *display, XMenu *menu, int *p_num, int *s_num, int x_pos, int y_pos, int event_mask);
285int XMenuDeletePane(Display *display, XMenu *menu, int p_num); 287int XMenuDeletePane(Display *display, XMenu *menu, int p_num);