Index: NSMenuView.m
===================================================================
--- NSMenuView.m	(revision 27608)
+++ NSMenuView.m	(working copy)
@@ -674,7 +674,9 @@
     }
   else
     {
-      unsigned i;
+      id owningPopUp = [_attachedMenu _owningPopUp];
+      int usesItem = owningPopUp && [owningPopUp usesItemFromMenu] && [owningPopUp pullsDown];
+      unsigned i = usesItem;
       unsigned howMany = [_itemCells count];
       unsigned wideTitleView = 1;
       float    neededImageAndTitleWidth = 0.0;
@@ -710,7 +712,7 @@
           menuBarHeight += _leftBorderOffset;
         }
       
-      for (i = 0; i < howMany; i++)
+      for (; i < howMany; i++)
         {
           float aStateImageWidth;
           float aTitleWidth;
@@ -832,9 +834,9 @@
         }
 
       [self setFrameSize: NSMakeSize(_cellSize.width + _leftBorderOffset, 
-                                     (howMany * _cellSize.height) 
+                                     ((howMany - usesItem) * _cellSize.height) 
                                      + menuBarHeight)];
-      [_titleView setFrame: NSMakeRect (0, howMany * _cellSize.height,
+      [_titleView setFrame: NSMakeRect (0, (howMany - usesItem) * _cellSize.height,
                                         NSWidth (_bounds), menuBarHeight)];
     }
   _needsSizing = NO;
@@ -1128,7 +1130,9 @@
 
       if (_horizontal == NO)
         {
-          f = screenRect.size.height * (items - 1);
+	  id owningPopUp = [_attachedMenu _owningPopUp];
+	  int usesItemFromMenu = owningPopUp && [owningPopUp usesItemFromMenu] && [owningPopUp pullsDown];
+          f = screenRect.size.height * (items - (1 + usesItemFromMenu));
           screenFrame.size.height += f + _leftBorderOffset;
           screenFrame.origin.y -= f;
           screenFrame.size.width += _leftBorderOffset;
@@ -1155,13 +1159,11 @@
   // Update position, if needed, using the preferredEdge
   if (edge == NSMinYEdge)
     {
-/*
       if ([_attachedMenu _ownedByPopUp] && 
-          ([[_attachedMenu _owningPopUp] pullsDown]))
+          [[_attachedMenu _owningPopUp] pullsDown])
         {
           screenFrame.origin.y -= screenRect.size.height;  
         }
-*/
     }
   else if (edge == NSMaxYEdge)
     {
@@ -1194,7 +1196,8 @@
 
 - (void) drawRect: (NSRect)rect
 {
-  int        i;
+  id owningPopUp = [_attachedMenu _owningPopUp];
+  int        i = (owningPopUp && [owningPopUp usesItemFromMenu] && [owningPopUp pullsDown]);
   int        howMany = [_itemCells count];
   NSRectEdge sides[2]; 
   float      grays[] = {NSDarkGray, NSDarkGray};
@@ -1214,7 +1217,7 @@
     }
   
   // Draw the menu cells.
-  for (i = 0; i < howMany; i++)
+  for (; i < howMany; i++)
     {
       NSRect aRect;
       NSMenuItemCell *aCell;
