diff options
| author | Po Lu | 2022-05-13 16:06:40 +0800 |
|---|---|---|
| committer | Po Lu | 2022-05-13 16:06:40 +0800 |
| commit | 62d2db341ce7b8b109d5f284adac8e19d0a6965e (patch) | |
| tree | a7c9fd224bf145eb215a09385463fd4ad455a213 /src | |
| parent | 85ac627ef4096a2d303f1d37c45da05dea1b7781 (diff) | |
| download | emacs-62d2db341ce7b8b109d5f284adac8e19d0a6965e.tar.gz emacs-62d2db341ce7b8b109d5f284adac8e19d0a6965e.zip | |
Display help-echo for popup menus on NS
* src/nsmenu.m ([EmacsMenu menu:willHighlightItem:]): Display
help echo for ordinary popup menus as well.
Diffstat (limited to 'src')
| -rw-r--r-- | src/nsmenu.m | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/src/nsmenu.m b/src/nsmenu.m index 34864f94087..9f4825ac140 100644 --- a/src/nsmenu.m +++ b/src/nsmenu.m | |||
| @@ -765,17 +765,33 @@ prettify_key (const char *key) | |||
| 765 | NSInteger idx = [item tag]; | 765 | NSInteger idx = [item tag]; |
| 766 | struct frame *f = SELECTED_FRAME (); | 766 | struct frame *f = SELECTED_FRAME (); |
| 767 | Lisp_Object vec = f->menu_bar_vector; | 767 | Lisp_Object vec = f->menu_bar_vector; |
| 768 | Lisp_Object help, frame; | 768 | Lisp_Object help, frame, *client_data; |
| 769 | 769 | ||
| 770 | /* This isn't a menubar, ignore. */ | 770 | XSETFRAME (frame, f); |
| 771 | if (context_menu_value == -1) | ||
| 772 | return; | ||
| 773 | 771 | ||
| 774 | if (idx >= ASIZE (vec)) | 772 | /* This menu isn't a menubar, so use the pointer to the popup menu |
| 775 | return; | 773 | data. */ |
| 774 | if (context_menu_value != 0) | ||
| 775 | { | ||
| 776 | client_data = (Lisp_Object *) idx; | ||
| 776 | 777 | ||
| 777 | XSETFRAME (frame, f); | 778 | if (client_data) |
| 778 | help = AREF (vec, idx + MENU_ITEMS_ITEM_HELP); | 779 | help = client_data[MENU_ITEMS_ITEM_HELP]; |
| 780 | else | ||
| 781 | help = Qnil; | ||
| 782 | } | ||
| 783 | /* Just dismiss any help-echo that might already be in progress if | ||
| 784 | no menu item will be highlighted. */ | ||
| 785 | else if (item == nil) | ||
| 786 | help = Qnil; | ||
| 787 | else | ||
| 788 | { | ||
| 789 | if (idx >= ASIZE (vec)) | ||
| 790 | return; | ||
| 791 | |||
| 792 | /* Otherwise, get the help data from the menu bar vector. */ | ||
| 793 | help = AREF (vec, idx + MENU_ITEMS_ITEM_HELP); | ||
| 794 | } | ||
| 779 | 795 | ||
| 780 | popup_activated_flag++; | 796 | popup_activated_flag++; |
| 781 | if (STRINGP (help) || NILP (help)) | 797 | if (STRINGP (help) || NILP (help)) |