diff src/xmenu.c @ 7521:2971264ff9aa

(xmenu_show): Completely ignore nameless panes except for the first pane. Ignore named panes too if KEYMAPS.
author Richard M. Stallman <rms@gnu.org>
date Tue, 17 May 1994 04:30:32 +0000
parents 1a6156c8731e
children 371ae57ac9a8
line wrap: on
line diff
--- a/src/xmenu.c	Tue May 17 03:30:40 1994 +0000
+++ b/src/xmenu.c	Tue May 17 04:30:32 1994 +0000
@@ -1382,6 +1382,8 @@
 
   Position root_x, root_y;
 
+  int first_pane;
+
   *error = NULL;
 
   if (menu_items_used <= MENU_ITEMS_PANE_LENGTH)
@@ -1438,6 +1440,7 @@
   wv->value = 0;
   wv->enabled = 1;
   first_wv = wv;
+  first_pane = 1;
  
   /* Loop over all panes and items, filling in the tree.  */
   i = 0;
@@ -1448,12 +1451,14 @@
 	  submenu_stack[submenu_depth++] = save_wv;
 	  save_wv = prev_wv;
 	  prev_wv = 0;
+	  first_pane = 1;
 	  i++;
 	}
       else if (EQ (XVECTOR (menu_items)->contents[i], Qlambda))
 	{
 	  prev_wv = save_wv;
 	  save_wv = submenu_stack[--submenu_depth];
+	  first_pane = 0;
 	  i++;
 	}
       else if (EQ (XVECTOR (menu_items)->contents[i], Qt)
@@ -1480,7 +1485,7 @@
 	  /* If the pane has a meaningful name,
 	     make the pane a top-level menu item
 	     with its items as a submenu beneath it.  */
-	  if (strcmp (pane_string, ""))
+	  if (!keymaps && strcmp (pane_string, ""))
 	    {
 	      wv = malloc_widget_value ();
 	      if (save_wv)
@@ -1492,9 +1497,15 @@
 		wv->name++;
 	      wv->value = 0;
 	      wv->enabled = 1;
+	      save_wv = wv;
+	      prev_wv = 0;
 	    }
-	  save_wv = wv;
-	  prev_wv = 0;
+	  else if (first_pane)
+	    {
+	      save_wv = wv;
+	      prev_wv = 0;
+	    }
+	  first_pane = 0;
 	  i += MENU_ITEMS_PANE_LENGTH;
 	}
       else