aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard M. Stallman1994-03-03 18:04:59 +0000
committerRichard M. Stallman1994-03-03 18:04:59 +0000
commit5b3557df52431521137aa996124d4dff6a4f9055 (patch)
treeb83d25ed5888398916a7546e97b9c242dc4232b6 /src
parent16c323ee67cd8809ab30216f369a1d4df58f37d9 (diff)
downloademacs-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.c31
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
796Lisp_Object 798Lisp_Object
797map_event_to_object (event, f) 799map_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)