diff options
| author | Richard M. Stallman | 2002-12-23 18:06:42 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 2002-12-23 18:06:42 +0000 |
| commit | 37dc84ffa8ea944866ab062e23c78dd9d2671b3e (patch) | |
| tree | 80454ea4de48fef8631a4c6b63a85512fe8d6519 /src/xmenu.c | |
| parent | 07ce8b53eae95f8bc5ca40e99cf781966e9a71aa (diff) | |
| download | emacs-37dc84ffa8ea944866ab062e23c78dd9d2671b3e.tar.gz emacs-37dc84ffa8ea944866ab062e23c78dd9d2671b3e.zip | |
(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.
Diffstat (limited to 'src/xmenu.c')
| -rw-r--r-- | src/xmenu.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/xmenu.c b/src/xmenu.c index 196b38334d0..4724b2e7ff4 100644 --- a/src/xmenu.c +++ b/src/xmenu.c | |||
| @@ -1434,7 +1434,13 @@ parse_single_submenu (item_key, item_name, maps) | |||
| 1434 | Qnil, Qnil, Qnil, Qnil); | 1434 | Qnil, Qnil, Qnil, Qnil); |
| 1435 | } | 1435 | } |
| 1436 | else | 1436 | else |
| 1437 | single_keymap_panes (mapvec[i], item_name, item_key, 0, 10); | 1437 | { |
| 1438 | Lisp_Object prompt; | ||
| 1439 | prompt = Fkeymap_prompt (mapvec[i]); | ||
| 1440 | single_keymap_panes (mapvec[i], | ||
| 1441 | !NILP (prompt) ? prompt : item_name, | ||
| 1442 | item_key, 0, 10); | ||
| 1443 | } | ||
| 1438 | } | 1444 | } |
| 1439 | 1445 | ||
| 1440 | return top_level_items; | 1446 | return top_level_items; |
| @@ -1465,10 +1471,10 @@ digest_single_submenu (start, end, top_level_items) | |||
| 1465 | save_wv = 0; | 1471 | save_wv = 0; |
| 1466 | prev_wv = 0; | 1472 | prev_wv = 0; |
| 1467 | 1473 | ||
| 1468 | /* Loop over all panes and items made during this call | 1474 | /* Loop over all panes and items made by the preceding call |
| 1469 | and construct a tree of widget_value objects. | 1475 | to parse_single_submenu and construct a tree of widget_value objects. |
| 1470 | Ignore the panes and items made by previous calls to | 1476 | Ignore the panes and items used by previous calls to |
| 1471 | single_submenu, even though those are also in menu_items. */ | 1477 | digest_single_submenu, even though those are also in menu_items. */ |
| 1472 | i = start; | 1478 | i = start; |
| 1473 | while (i < end) | 1479 | while (i < end) |
| 1474 | { | 1480 | { |
| @@ -1674,7 +1680,7 @@ set_frame_menubar (f, first_time, deep_p) | |||
| 1674 | widget_value *wv, *first_wv, *prev_wv = 0; | 1680 | widget_value *wv, *first_wv, *prev_wv = 0; |
| 1675 | int i, last_i; | 1681 | int i, last_i; |
| 1676 | int *submenu_start, *submenu_end; | 1682 | int *submenu_start, *submenu_end; |
| 1677 | int *submenu_top_level_items; | 1683 | int *submenu_top_level_items, *submenu_n_panes; |
| 1678 | 1684 | ||
| 1679 | LWLIB_ID id; | 1685 | LWLIB_ID id; |
| 1680 | 1686 | ||
| @@ -1752,6 +1758,7 @@ set_frame_menubar (f, first_time, deep_p) | |||
| 1752 | menu_items_allocated = VECTORP (menu_items) ? ASIZE (menu_items) : 0; | 1758 | menu_items_allocated = VECTORP (menu_items) ? ASIZE (menu_items) : 0; |
| 1753 | submenu_start = (int *) alloca (XVECTOR (items)->size * sizeof (int *)); | 1759 | submenu_start = (int *) alloca (XVECTOR (items)->size * sizeof (int *)); |
| 1754 | submenu_end = (int *) alloca (XVECTOR (items)->size * sizeof (int *)); | 1760 | submenu_end = (int *) alloca (XVECTOR (items)->size * sizeof (int *)); |
| 1761 | submenu_n_panes = (int *) alloca (XVECTOR (items)->size * sizeof (int)); | ||
| 1755 | submenu_top_level_items | 1762 | submenu_top_level_items |
| 1756 | = (int *) alloca (XVECTOR (items)->size * sizeof (int *)); | 1763 | = (int *) alloca (XVECTOR (items)->size * sizeof (int *)); |
| 1757 | init_menu_items (); | 1764 | init_menu_items (); |
| @@ -1772,6 +1779,7 @@ set_frame_menubar (f, first_time, deep_p) | |||
| 1772 | menu_items_n_panes = 0; | 1779 | menu_items_n_panes = 0; |
| 1773 | submenu_top_level_items[i] | 1780 | submenu_top_level_items[i] |
| 1774 | = parse_single_submenu (key, string, maps); | 1781 | = parse_single_submenu (key, string, maps); |
| 1782 | submenu_n_panes[i] = menu_items_n_panes; | ||
| 1775 | 1783 | ||
| 1776 | submenu_end[i] = menu_items_used; | 1784 | submenu_end[i] = menu_items_used; |
| 1777 | } | 1785 | } |
| @@ -1791,6 +1799,7 @@ set_frame_menubar (f, first_time, deep_p) | |||
| 1791 | 1799 | ||
| 1792 | for (i = 0; i < last_i; i += 4) | 1800 | for (i = 0; i < last_i; i += 4) |
| 1793 | { | 1801 | { |
| 1802 | menu_items_n_panes = submenu_n_panes[i]; | ||
| 1794 | wv = digest_single_submenu (submenu_start[i], submenu_end[i], | 1803 | wv = digest_single_submenu (submenu_start[i], submenu_end[i], |
| 1795 | submenu_top_level_items[i]); | 1804 | submenu_top_level_items[i]); |
| 1796 | if (prev_wv) | 1805 | if (prev_wv) |