diff options
| author | Richard M. Stallman | 1994-03-03 18:04:59 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1994-03-03 18:04:59 +0000 |
| commit | 5b3557df52431521137aa996124d4dff6a4f9055 (patch) | |
| tree | b83d25ed5888398916a7546e97b9c242dc4232b6 /src | |
| parent | 16c323ee67cd8809ab30216f369a1d4df58f37d9 (diff) | |
| download | emacs-5b3557df52431521137aa996124d4dff6a4f9055.tar.gz emacs-5b3557df52431521137aa996124d4dff6a4f9055.zip | |
(map_event_to_object, set_frame_menubar):
Use FRAME_MENU_BAR_LINES as vector.
Diffstat (limited to 'src')
| -rw-r--r-- | src/xmenu.c | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/src/xmenu.c b/src/xmenu.c index 2133ad51538..4a82d47987a 100644 --- a/src/xmenu.c +++ b/src/xmenu.c | |||
| @@ -793,6 +793,8 @@ event_is_in_menu_item (mw, event, name, string_w) | |||
| 793 | } | 793 | } |
| 794 | 794 | ||
| 795 | 795 | ||
| 796 | /* Return the menu bar key which corresponds to event EVENT in frame F. */ | ||
| 797 | |||
| 796 | Lisp_Object | 798 | Lisp_Object |
| 797 | map_event_to_object (event, f) | 799 | map_event_to_object (event, f) |
| 798 | struct input_event *event; | 800 | struct input_event *event; |
| @@ -812,11 +814,22 @@ map_event_to_object (event, f) | |||
| 812 | if (ws && event_is_in_menu_item (mw, event, val->name, &string_w)) | 814 | if (ws && event_is_in_menu_item (mw, event, val->name, &string_w)) |
| 813 | { | 815 | { |
| 814 | Lisp_Object items; | 816 | Lisp_Object items; |
| 817 | int i; | ||
| 818 | |||
| 815 | items = FRAME_MENU_BAR_ITEMS (f); | 819 | items = FRAME_MENU_BAR_ITEMS (f); |
| 816 | for (; CONSP (items); items = XCONS (items)->cdr) | 820 | |
| 817 | if (!strcmp (val->name, | 821 | for (i = 0; i < XVECTOR (items)->size; i += 3) |
| 818 | XSTRING (Fcar (Fcdr (Fcar (items))))->data)) | 822 | { |
| 819 | return items; | 823 | Lisp_Object pos, string, item; |
| 824 | item = XVECTOR (items)->contents[i]; | ||
| 825 | string = XVECTOR (items)->contents[i + 1]; | ||
| 826 | pos = XVECTOR (items)->contents[i + 2]; | ||
| 827 | if (NILP (string)) | ||
| 828 | break; | ||
| 829 | |||
| 830 | if (!strcmp (val->name, XSTRING (string)->data)) | ||
| 831 | return item; | ||
| 832 | } | ||
| 820 | } | 833 | } |
| 821 | } | 834 | } |
| 822 | return Qnil; | 835 | return Qnil; |
| @@ -920,8 +933,9 @@ set_frame_menubar (f) | |||
| 920 | { | 933 | { |
| 921 | Widget menubar_widget = f->display.x->menubar_widget; | 934 | Widget menubar_widget = f->display.x->menubar_widget; |
| 922 | int id = (int) f; | 935 | int id = (int) f; |
| 923 | Lisp_Object tail; | 936 | Lisp_Object tail, items; |
| 924 | widget_value *wv, *save_wv, *first_wv, *prev_wv = 0; | 937 | widget_value *wv, *save_wv, *first_wv, *prev_wv = 0; |
| 938 | int i; | ||
| 925 | 939 | ||
| 926 | BLOCK_INPUT; | 940 | BLOCK_INPUT; |
| 927 | 941 | ||
| @@ -931,12 +945,15 @@ set_frame_menubar (f) | |||
| 931 | wv->enabled = 1; | 945 | wv->enabled = 1; |
| 932 | save_wv = first_wv = wv; | 946 | save_wv = first_wv = wv; |
| 933 | 947 | ||
| 948 | items = FRAME_MENU_BAR_ITEMS (f); | ||
| 934 | 949 | ||
| 935 | for (tail = FRAME_MENU_BAR_ITEMS (f); CONSP (tail); tail = XCONS (tail)->cdr) | 950 | for (i = 0; i < XVECTOR (items)->size; i += 3) |
| 936 | { | 951 | { |
| 937 | Lisp_Object string; | 952 | Lisp_Object string; |
| 938 | 953 | ||
| 939 | string = Fcar (Fcdr (Fcar (tail))); | 954 | string = XVECTOR (items)->contents[i + 1]; |
| 955 | if (NILP (string)) | ||
| 956 | break; | ||
| 940 | 957 | ||
| 941 | wv = malloc_widget_value (); | 958 | wv = malloc_widget_value (); |
| 942 | if (prev_wv) | 959 | if (prev_wv) |