]> git.eshelyaron.com Git - emacs.git/commitdiff
Display help-echo for popup menus on NS
authorPo Lu <luangruo@yahoo.com>
Fri, 13 May 2022 08:06:40 +0000 (16:06 +0800)
committerPo Lu <luangruo@yahoo.com>
Fri, 13 May 2022 08:06:40 +0000 (16:06 +0800)
* src/nsmenu.m ([EmacsMenu menu:willHighlightItem:]): Display
help echo for ordinary popup menus as well.

src/nsmenu.m

index 34864f940879fa0c8155eeb28f57178346d9d716..9f4825ac140258293b9aac53af92427cb13947fb 100644 (file)
@@ -765,17 +765,33 @@ prettify_key (const char *key)
   NSInteger idx = [item tag];
   struct frame *f = SELECTED_FRAME ();
   Lisp_Object vec = f->menu_bar_vector;
-  Lisp_Object help, frame;
+  Lisp_Object help, frame, *client_data;
 
-  /* This isn't a menubar, ignore.  */
-  if (context_menu_value == -1)
-    return;
+  XSETFRAME (frame, f);
 
-  if (idx >= ASIZE (vec))
-    return;
+  /* This menu isn't a menubar, so use the pointer to the popup menu
+     data.  */
+  if (context_menu_value != 0)
+    {
+      client_data = (Lisp_Object *) idx;
 
-  XSETFRAME (frame, f);
-  help = AREF (vec, idx + MENU_ITEMS_ITEM_HELP);
+      if (client_data)
+       help = client_data[MENU_ITEMS_ITEM_HELP];
+      else
+       help = Qnil;
+    }
+  /* Just dismiss any help-echo that might already be in progress if
+     no menu item will be highlighted.  */
+  else if (item == nil)
+    help = Qnil;
+  else
+    {
+      if (idx >= ASIZE (vec))
+       return;
+
+      /* Otherwise, get the help data from the menu bar vector.  */
+      help = AREF (vec, idx + MENU_ITEMS_ITEM_HELP);
+    }
 
   popup_activated_flag++;
   if (STRINGP (help) || NILP (help))