# HG changeset patch # User Kim F. Storm # Date 1014216706 0 # Node ID 27bc3e253caf7ec066a5bb9993c93c3560e24b86 # Parent 43b2b2f46437181aa8aa36753966362273112cd0 (menu_bar_items): Don't include keymap or local-map bindings at PT when building menu (the menu is not updated often enough for this to work reliable). (tool_bar_items): Likewise. (current_active_maps): Removed unused (and faulty) function. diff -r 43b2b2f46437 -r 27bc3e253caf src/keyboard.c --- a/src/keyboard.c Wed Feb 20 10:27:06 2002 +0000 +++ b/src/keyboard.c Wed Feb 20 14:51:46 2002 +0000 @@ -6496,18 +6496,14 @@ } else { - /* No, so use major and minor mode keymaps and keymap property. */ - int extra_maps = 2; - Lisp_Object map = get_local_map (PT, current_buffer, Qkeymap); - if (!NILP (map)) - extra_maps = 3; + /* No, so use major and minor mode keymaps. + Don't include local-map or keymap properties, as menu-bar + bindings are not supported in those maps (that would require + checking for menu-bar updates after every command). */ nmaps = current_minor_maps (NULL, &tmaps); - maps = (Lisp_Object *) alloca ((nmaps + extra_maps) - * sizeof (maps[0])); + maps = (Lisp_Object *) alloca ((nmaps + 2) * sizeof (maps[0])); bcopy (tmaps, maps, nmaps * sizeof (maps[0])); - if (!NILP (map)) - maps[nmaps++] = map; - maps[nmaps++] = get_local_map (PT, current_buffer, Qlocal_map); + maps[nmaps++] = current_buffer->keymap; } maps[nmaps++] = current_global_map; } @@ -7148,18 +7144,14 @@ } else { - /* No, so use major and minor mode keymaps and keymap property. */ - int extra_maps = 2; - Lisp_Object map = get_local_map (PT, current_buffer, Qkeymap); - if (!NILP (map)) - extra_maps = 3; + /* No, so use major and minor mode keymaps. + Don't include local-map or keymap properties, as tool-bar + bindings are not supported in those maps (that would require + checking for tool-bar updates after every command). */ nmaps = current_minor_maps (NULL, &tmaps); - maps = (Lisp_Object *) alloca ((nmaps + extra_maps) - * sizeof (maps[0])); + maps = (Lisp_Object *) alloca ((nmaps + 2) * sizeof (maps[0])); bcopy (tmaps, maps, nmaps * sizeof (maps[0])); - if (!NILP (map)) - maps[nmaps++] = map; - maps[nmaps++] = get_local_map (PT, current_buffer, Qlocal_map); + maps[nmaps++] = current_buffer->keymap; } /* Add global keymap at the end. */ @@ -9479,49 +9471,6 @@ RETURN_UNGCPRO (value); } -/* Find the set of keymaps now active. - Store into *MAPS_P a vector holding the various maps - and return the number of them. The vector was malloc'd - and the caller should free it. */ - -int -current_active_maps (maps_p) - Lisp_Object **maps_p; -{ - Lisp_Object *tmaps, *maps; - int nmaps; - - /* Should overriding-terminal-local-map and overriding-local-map apply? */ - if (!NILP (Voverriding_local_map_menu_flag)) - { - /* Yes, use them (if non-nil) as well as the global map. */ - maps = (Lisp_Object *) xmalloc (3 * sizeof (maps[0])); - nmaps = 0; - if (!NILP (current_kboard->Voverriding_terminal_local_map)) - maps[nmaps++] = current_kboard->Voverriding_terminal_local_map; - if (!NILP (Voverriding_local_map)) - maps[nmaps++] = Voverriding_local_map; - } - else - { - /* No, so use major and minor mode keymaps and keymap property. */ - int extra_maps = 2; - Lisp_Object map = get_local_map (PT, current_buffer, Qkeymap); - if (!NILP (map)) - extra_maps = 3; - nmaps = current_minor_maps (NULL, &tmaps); - maps = (Lisp_Object *) alloca ((nmaps + extra_maps) - * sizeof (maps[0])); - bcopy (tmaps, maps, nmaps * sizeof (maps[0])); - if (!NILP (map)) - maps[nmaps++] = map; - maps[nmaps++] = get_local_map (PT, current_buffer, Qlocal_map); - } - maps[nmaps++] = current_global_map; - - *maps_p = maps; - return nmaps; -} /* Return nonzero if input events are pending. */