# HG changeset patch # User Richard M. Stallman # Date 1040666802 0 # Node ID 2c4a754e02b6eb9b6451c558034cf5fdd87e7267 # Parent a96801f68a8287180e4a255eb790e7a1f0ef322e (parse_single_submenu): Use individual keymap's prompt string as pane name, if there is one. (set_frame_menubar): Save menu_items_n_panes from each call to parse_single_submenu and use it when calling digest_single_submenu. diff -r a96801f68a82 -r 2c4a754e02b6 src/xmenu.c --- a/src/xmenu.c Mon Dec 23 18:04:45 2002 +0000 +++ b/src/xmenu.c Mon Dec 23 18:06:42 2002 +0000 @@ -1434,7 +1434,13 @@ Qnil, Qnil, Qnil, Qnil); } else - single_keymap_panes (mapvec[i], item_name, item_key, 0, 10); + { + Lisp_Object prompt; + prompt = Fkeymap_prompt (mapvec[i]); + single_keymap_panes (mapvec[i], + !NILP (prompt) ? prompt : item_name, + item_key, 0, 10); + } } return top_level_items; @@ -1465,10 +1471,10 @@ save_wv = 0; prev_wv = 0; - /* Loop over all panes and items made during this call - and construct a tree of widget_value objects. - Ignore the panes and items made by previous calls to - single_submenu, even though those are also in menu_items. */ + /* Loop over all panes and items made by the preceding call + to parse_single_submenu and construct a tree of widget_value objects. + Ignore the panes and items used by previous calls to + digest_single_submenu, even though those are also in menu_items. */ i = start; while (i < end) { @@ -1674,7 +1680,7 @@ widget_value *wv, *first_wv, *prev_wv = 0; int i, last_i; int *submenu_start, *submenu_end; - int *submenu_top_level_items; + int *submenu_top_level_items, *submenu_n_panes; LWLIB_ID id; @@ -1752,6 +1758,7 @@ menu_items_allocated = VECTORP (menu_items) ? ASIZE (menu_items) : 0; submenu_start = (int *) alloca (XVECTOR (items)->size * sizeof (int *)); submenu_end = (int *) alloca (XVECTOR (items)->size * sizeof (int *)); + submenu_n_panes = (int *) alloca (XVECTOR (items)->size * sizeof (int)); submenu_top_level_items = (int *) alloca (XVECTOR (items)->size * sizeof (int *)); init_menu_items (); @@ -1772,6 +1779,7 @@ menu_items_n_panes = 0; submenu_top_level_items[i] = parse_single_submenu (key, string, maps); + submenu_n_panes[i] = menu_items_n_panes; submenu_end[i] = menu_items_used; } @@ -1791,6 +1799,7 @@ for (i = 0; i < last_i; i += 4) { + menu_items_n_panes = submenu_n_panes[i]; wv = digest_single_submenu (submenu_start[i], submenu_end[i], submenu_top_level_items[i]); if (prev_wv)