# HG changeset patch # User Richard M. Stallman # Date 1040594444 0 # Node ID d81c005163cbbc56a3d1bef71facc6ac0c44d8a8 # Parent a9565e3d6e349a5b907b653c085974d21110bb51 (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. diff -r a9565e3d6e34 -r d81c005163cb lwlib/xlwmenu.c --- a/lwlib/xlwmenu.c Sun Dec 22 21:59:20 2002 +0000 +++ b/lwlib/xlwmenu.c Sun Dec 22 22:00:44 2002 +0000 @@ -316,7 +316,7 @@ 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 @@ /* 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 @@ 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);