         }
         else
         {
-            setMajorSize(index, elt.getLayoutBoundsWidth());            
-            var h:Number = Math.min(elt.getPreferredBoundsHeight(), elt.getLayoutBoundsHeight());
-
+            setMajorSize(index, elt.getLayoutBoundsWidth());
+            var lh:Number = elt.getLayoutBoundsHeight();
+            var h:Number = Math.min(elt.getPreferredBoundsHeight(), lh);
+            if (lh == h)
+                minorSizeBasedOnLayoutSize = true;
+            
             // Use the _minorSize instead of the getter, since the getter returns maximum
             // of _minorSize and _defaultMinorSize.
             _minorSize = Math.max(_minorSize, h);

    public function set minorSize(value:Number):void
    {
        _minorSize = value;
    }
    
    //----------------------------------

    // What the length will be after any pending changes are flushed.
    private var pendingLength:int = -1;

    // true if minorSize was set in cacheDimensions from the layoutBounds minor dimension
    public var minorSizeBasedOnLayoutSize:Boolean;
    
    public function LinearLayoutVector(majorAxis:uint = VERTICAL)
    {
        super();
