diff options
author | Richard M. Stallman <rms@gnu.org> | 2002-12-22 22:00:44 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 2002-12-22 22:00:44 +0000 |
commit | fa74535d4483ab0107607da3e7a85472fb1765c4 (patch) | |
tree | 1036ebc7f39f23d1e05be247b555d1e927554d09 /lwlib | |
parent | c67af3f49f5dfac6d7a0cfe8643422c97b8909fc (diff) |
(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.
Diffstat (limited to 'lwlib')
-rw-r--r-- | lwlib/xlwmenu.c | 14 |
1 files 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); |