]> git.eshelyaron.com Git - emacs.git/commitdiff
Make menu bar help text work on macOS as well
authorPo Lu <luangruo@yahoo.com>
Tue, 3 May 2022 08:12:24 +0000 (16:12 +0800)
committerPo Lu <luangruo@yahoo.com>
Tue, 3 May 2022 08:12:24 +0000 (16:12 +0800)
* lisp/tooltip.el (tooltip-show-help): Resort to displaying
messages in the echo area on NS.

* src/nsmenu.m ([EmacsMenu menu:willHighlightItem:]): Call
`show_help_echo' instead of storing an event into the keyboard
buffer.

lisp/tooltip.el
src/nsmenu.m

index 0ee3c38e26d1e993a3eb92d7222d1a72709ef8d8..d6b6b1bc9b0f1c6d8a09f284b48d03353b5272e9 100644 (file)
@@ -377,7 +377,11 @@ It is also called if Tooltip mode is on, for text-only displays."
 (defun tooltip-show-help (msg)
   "Function installed as `show-help-function'.
 MSG is either a help string to display, or nil to cancel the display."
-  (if (and (display-graphic-p))
+  (if (and (display-graphic-p)
+           ;; Tooltips can't be displayed on top of the global menu
+           ;; bar on NS.
+           (or (not (eq window-system 'ns))
+               (menu-or-popup-active-p)))
       (let ((previous-help tooltip-help-message))
        (setq tooltip-help-message msg)
        (cond ((null msg)
index 0f7d1fb98f60f8677d9cd0186216180a85d6fed8..b0ab12bb87d5a05d19cd5a7400c3667e5b94eed9 100644 (file)
@@ -760,12 +760,6 @@ prettify_key (const char *key)
       : 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];
@@ -779,12 +773,11 @@ prettify_key (const char *key)
   XSETFRAME (frame, f);
   help = AREF (vec, idx + MENU_ITEMS_ITEM_HELP);
 
+  popup_activated_flag++;
   if (STRINGP (help) || NILP (help))
-    kbd_buffer_store_help_event (frame, help);
-
-  raise (SIGIO);
+    show_help_echo (help, Qnil, Qnil, Qnil);
+  popup_activated_flag--;
 }
-#endif
 
 #ifdef NS_IMPL_GNUSTEP
 - (void) close