diff options
author | Richard M. Stallman <rms@gnu.org> | 1999-01-02 00:11:36 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1999-01-02 00:11:36 +0000 |
commit | 759860a6af74f327a9b1b4ddb49a42929e10f92e (patch) | |
tree | 8a014eced1d5532aa4a04b26c8a96d35b12c700b /src/keyboard.c | |
parent | e0a6ee5e19136304d6e5b97b42279b80ff9334ab (diff) | |
download | emacs-759860a6af74f327a9b1b4ddb49a42929e10f92e.tar.gz |
In each active map, for each menu bar item, use only the first submap.
(menu_bar_one_keymap): Initialize menu_bar_one_keymap_changed_items.
(menu_bar_item): Update and test menu_bar_one_keymap_changed_items.
(syms_of_keyboard): Staticpro and init it.
Diffstat (limited to 'src/keyboard.c')
-rw-r--r-- | src/keyboard.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/keyboard.c b/src/keyboard.c index 4f531457214..7ba7f0a6319 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -5701,12 +5701,16 @@ menu_bar_items (old) /* Scan one map KEYMAP, accumulating any menu items it defines in menu_bar_items_vector. */ +static Lisp_Object menu_bar_one_keymap_changed_items; + static void menu_bar_one_keymap (keymap) Lisp_Object keymap; { Lisp_Object tail, item, table; + menu_bar_one_keymap_changed_items = Qnil; + /* Loop over all keymap entries that have menu strings. */ for (tail = keymap; CONSP (tail); tail = XCONS (tail)->cdr) { @@ -5739,6 +5743,7 @@ menu_bar_item (key, item) { struct gcpro gcpro1; int i; + Lisp_Object tem; if (EQ (item, Qundefined)) { @@ -5767,6 +5772,15 @@ menu_bar_item (key, item) if (!i) return; + /* If this keymap has already contributed to this KEY, + don't contribute to it a second time. */ + tem = Fmemq (key, menu_bar_one_keymap_changed_items); + if (!NILP (tem)) + return; + + menu_bar_one_keymap_changed_items + = Fcons (key, menu_bar_one_keymap_changed_items); + item = XVECTOR (item_properties)->contents[ITEM_PROPERTY_DEF]; /* Find any existing item for this KEY. */ @@ -9075,6 +9089,9 @@ syms_of_keyboard () read_key_sequence_cmd = Qnil; staticpro (&read_key_sequence_cmd); + menu_bar_one_keymap_changed_items = Qnil; + staticpro (&menu_bar_one_keymap_changed_items); + defsubr (&Sevent_convert_list); defsubr (&Sread_key_sequence); defsubr (&Sread_key_sequence_vector); |