[haiku-commits] r40385 - haiku/trunk/src/libs/alm

  • From: clemens.zeidler@xxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 8 Feb 2011 10:02:36 +0100 (CET)

Author: czeidler
Date: 2011-02-08 10:02:36 +0100 (Tue, 08 Feb 2011)
New Revision: 40385
Changeset: http://dev.haiku-os.org/changeset/40385

Modified:
   haiku/trunk/src/libs/alm/Area.cpp
Log:
No pref constraints for sizes equal -1. This works better with items like glue.



Modified: haiku/trunk/src/libs/alm/Area.cpp
===================================================================
--- haiku/trunk/src/libs/alm/Area.cpp   2011-02-08 09:01:11 UTC (rev 40384)
+++ haiku/trunk/src/libs/alm/Area.cpp   2011-02-08 09:02:36 UTC (rev 40385)
@@ -532,7 +532,7 @@
                -factor, area->Bottom(), kEQ, 0.0);
 }
 
-
+#include <stdio.h>
 void
 Area::InvalidateSizeConstraints()
 {
@@ -626,21 +626,8 @@
        fConstraints.AddItem(fMinContentWidth);
        fConstraints.AddItem(fMinContentHeight);
 
-#if USE_SCALE_VARIABLE
-       fPreferredContentWidth = fLS->AddConstraint(-1.0, fLeft, 1.0, fRight, 
-1.0,
-               fScaleWidth, kEQ, 0, fShrinkPenalties.Width(),
-               fGrowPenalties.Width());
+       _SetupPreferredConstraints();
 
-       fPreferredContentHeight = fLS->AddConstraint(-1.0, fTop, 1.0, fBottom, 
-1.0,
-               fScaleHeight, kEQ, 0, fShrinkPenalties.Height(),
-               fGrowPenalties.Height());
-#else
-       fPreferredContentWidth = fLS->AddConstraint(-1.0, fLeft, 1.0, fRight, 
kEQ,
-               0, fShrinkPenalties.Width(), fGrowPenalties.Width());
-       fPreferredContentHeight = fLS->AddConstraint(-1.0, fTop, 1.0, fBottom, 
kEQ,
-               0, fShrinkPenalties.Height(), fGrowPenalties.Height());
-#endif
-
        BSize preferredSize = fLayoutItem->PreferredSize();
        _UpdatePreferredWidthConstraint(preferredSize);
        _UpdatePreferredHeightConstraint(preferredSize);
@@ -746,9 +733,18 @@
 void
 Area::_UpdatePreferredWidthConstraint(BSize& preferred)
 {
+       if (preferred.width == -1) {
+               delete fPreferredContentWidth;
+               fPreferredContentWidth = NULL;
+               return;
+       }
+
        float width = 0;
        if (preferred.width > 0)
-               width = preferred.Width() + LeftInset() + RightInset();
+               width = preferred.width + LeftInset() + RightInset();
+
+       _SetupPreferredConstraints();
+
 #if USE_SCALE_VARIABLE
        fPreferredContentWidth->SetLeftSide(-1.0, fLeft, 1.0, fRight, -width,
                fScaleWidth);
@@ -761,9 +757,17 @@
 void
 Area::_UpdatePreferredHeightConstraint(BSize& preferred)
 {
+       if (preferred.height == -1) {
+               delete fPreferredContentHeight;
+               fPreferredContentHeight = NULL;
+               return;
+       }
+
        float height = 0;
        if (preferred.height > 0)
-               height = preferred.Height() + TopInset() + BottomInset();
+               height = preferred.height + TopInset() + BottomInset();
+
+       _SetupPreferredConstraints();
 #if USE_SCALE_VARIABLE
        fPreferredContentHeight->SetLeftSide(-1.0, fTop, 1.0, fBottom, -height,
                fScaleHeight);
@@ -771,3 +775,30 @@
        fPreferredContentHeight->SetRightSide(height);
 #endif
 }
+
+
+void
+Area::_SetupPreferredConstraints()
+{
+#if USE_SCALE_VARIABLE
+       if (!fPreferredContentWidth) {
+               fPreferredContentWidth = fLS->AddConstraint(-1.0, fLeft, 1.0, 
fRight,
+                       -1.0, fScaleWidth, kEQ, 0, fShrinkPenalties.Width(),
+                       fGrowPenalties.Width());
+       }
+       if (!fPreferredContentHeight) {
+               fPreferredContentHeight = fLS->AddConstraint(-1.0, fTop, 1.0, 
fBottom,
+                       -1.0, fScaleHeight, kEQ, 0, fShrinkPenalties.Height(),
+                       fGrowPenalties.Height());
+       }
+#else
+       if (!fPreferredContentWidth) {
+               fPreferredContentWidth = fLS->AddConstraint(-1.0, fLeft, 1.0, 
fRight,
+                       kEQ, 0, fShrinkPenalties.Width(), 
fGrowPenalties.Width());
+       }
+       if (!fPreferredContentHeight) {
+               fPreferredContentHeight = fLS->AddConstraint(-1.0, fTop, 1.0, 
fBottom,
+                       kEQ, 0, fShrinkPenalties.Height(), 
fGrowPenalties.Height());
+       }
+#endif
+}


Other related posts:

  • » [haiku-commits] r40385 - haiku/trunk/src/libs/alm - clemens . zeidler