From fa74535d4483ab0107607da3e7a85472fb1765c4 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sun, 22 Dec 2002 22:00:44 +0000 Subject: [PATCH] (pop_new_stack_if_no_contents): Do nothing if new_depth is 1. (remap_menubar): Don't look in new_stack[0]. (Left): At level 1, do the same thing Right does. --- lwlib/xlwmenu.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lwlib/xlwmenu.c b/lwlib/xlwmenu.c index a1810f6d183..fc3abef503b 100644 --- a/lwlib/xlwmenu.c +++ b/lwlib/xlwmenu.c @@ -316,7 +316,7 @@ static void pop_new_stack_if_no_contents (mw) XlwMenuWidget mw; { - if (mw->menu.new_depth) + if (mw->menu.new_depth > 1) { if (!mw->menu.new_stack [mw->menu.new_depth - 1]->contents) mw->menu.new_depth -= 1; @@ -1397,7 +1397,7 @@ remap_menubar (mw) /* unmap the menus that popped down */ for (i = new_depth - 1; i < old_depth; i++) - if (i >= new_depth || !new_stack[i]->contents) + if (i >= new_depth || (i > 0 && !new_stack[i]->contents)) XUnmapWindow (XtDisplay (mw), windows[i].window); } @@ -2184,6 +2184,16 @@ Left (w, ev, params, num_params) the menu-bar. If the current item is the first one, highlight the last item in the menubar (probably Help). */ set_new_state (mw, find_prev_selectable (mw, selected_item), mw->menu.old_depth - 1); + else if (mw->menu.old_depth == 1 + && selected_item->contents) /* Is this menu item expandable? */ + { + set_new_state (mw, selected_item->contents, mw->menu.old_depth); + remap_menubar (mw); + selected_item = mw->menu.old_stack [mw->menu.old_depth - 1]; + if (!selected_item->enabled && find_first_selectable (mw, selected_item)) + set_new_state (mw, find_first_selectable (mw, selected_item), mw->menu.old_depth - 1); + } + else { pop_new_stack_if_no_contents (mw); -- 2.39.5