]> code.delx.au - gnu-emacs/commitdiff
(pop_new_stack_if_no_contents): Do nothing if new_depth is 1.
authorRichard M. Stallman <rms@gnu.org>
Sun, 22 Dec 2002 22:00:44 +0000 (22:00 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sun, 22 Dec 2002 22:00:44 +0000 (22:00 +0000)
(remap_menubar): Don't look in new_stack[0].
(Left): At level 1, do the same thing Right does.

lwlib/xlwmenu.c

index a1810f6d183d6a96e379710e9dcac818fd270ccf..fc3abef503b030abc6ab56e6889da0c64b724531 100644 (file)
@@ -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);