Add some menu bar help code on GNUstep

* src/nsmenu.m ([EmacsMenu menu:willHighlightItem:]): Implement
help event generation for GNUstep.
This commit is contained in:
Po Lu 2022-01-22 21:51:46 +08:00
parent 15090d7c6f
commit 7e596463be

View file

@ -758,6 +758,32 @@ - (Lisp_Object)runMenuAt: (NSPoint)p forFrame: (struct frame *)f
: Qnil;
}
#ifdef NS_IMPL_GNUSTEP
/* The code below doesn't work on Mac OS X, because it runs a nested
Carbon-related event loop to track menu bar movement.
But it works fine aside from that, so it will work on GNUstep if
they start to call `willHighlightItem'. */
- (void) menu: (NSMenu *) menu willHighlightItem: (NSMenuItem *) item
{
NSInteger idx = [item tag];
struct frame *f = SELECTED_FRAME ();
Lisp_Object vec = f->menu_bar_vector;
Lisp_Object help, frame;
if (idx >= ASIZE (vec))
return;
XSETFRAME (frame, f);
help = AREF (vec, idx + MENU_ITEMS_ITEM_HELP);
if (STRINGP (help) || NILP (help))
kbd_buffer_store_help_event (frame, help);
raise (SIGIO);
}
#endif
#ifdef NS_IMPL_GNUSTEP
- (void) close
{
@ -809,10 +835,6 @@ - (NSRect)confinementRectForMenu:(NSMenu *)menu
{
return NSZeroRect;
}
- (void)menu:(NSMenu *)menu willHighlightItem:(NSMenuItem *)item
{
}
#endif
@end /* EmacsMenu */