]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/layout.cpp
honour min/max size in wxMGL's wxWindow::DoSetSize
[wxWidgets.git] / src / common / layout.cpp
index 188d4c6d8f5076d1f783809490aacd815a17d310..74850c563135642e601c94b3e69171799c5d2685 100644 (file)
 
 #include "wx/layout.h"
 
-#if !USE_SHARED_LIBRARY
     IMPLEMENT_DYNAMIC_CLASS(wxIndividualLayoutConstraint, wxObject)
     IMPLEMENT_DYNAMIC_CLASS(wxLayoutConstraints, wxObject)
-#endif
 
 
 wxIndividualLayoutConstraint::wxIndividualLayoutConstraint()
@@ -68,11 +66,28 @@ wxIndividualLayoutConstraint::~wxIndividualLayoutConstraint()
 
 void wxIndividualLayoutConstraint::Set(wxRelationship rel, wxWindowBase *otherW, wxEdge otherE, int val, int marg)
 {
-  relationship = rel;
-  otherWin = otherW;
-  otherEdge = otherE;
-  value = val;
-  margin = marg;
+    if (rel == wxSameAs)
+    {
+        // If Set is called by the user with wxSameAs then call SameAs to do
+        // it since it will actually use wxPercent instead.
+        SameAs(otherW, otherE, marg);
+        return;
+    }
+
+    relationship = rel;
+    otherWin = otherW;
+    otherEdge = otherE;
+
+    if ( rel == wxPercentOf )
+    {
+        percent = val;
+    }
+    else
+    {
+        value = val;
+    }
+
+    margin = marg;
 }
 
 void wxIndividualLayoutConstraint::LeftOf(wxWindowBase *sibling, int marg)
@@ -99,19 +114,14 @@ void wxIndividualLayoutConstraint::Below(wxWindowBase *sibling, int marg)
 // 'Same edge' alignment
 //
 void wxIndividualLayoutConstraint::SameAs(wxWindowBase *otherW, wxEdge edge, int marg)
-{ 
-    Set(wxPercentOf, otherW, edge, 0, marg);
-    percent = 100;
+{
+    Set(wxPercentOf, otherW, edge, 100, marg);
 }
 
 // The edge is a percentage of the other window's edge
 void wxIndividualLayoutConstraint::PercentOf(wxWindowBase *otherW, wxEdge wh, int per)
-{ 
-    otherWin = otherW;
-    relationship = wxPercentOf;
-    percent = per;
-
-    otherEdge = wh;
+{
+    Set(wxPercentOf, otherW, wh, per);
 }
 
 //
@@ -119,7 +129,8 @@ void wxIndividualLayoutConstraint::PercentOf(wxWindowBase *otherW, wxEdge wh, in
 //
 void wxIndividualLayoutConstraint::Absolute(int val)
 {
-    value = val; relationship = wxAbsolute;
+    value = val;
+    relationship = wxAbsolute;
 }
 
 // Reset constraint if it mentions otherWin
@@ -136,8 +147,8 @@ bool wxIndividualLayoutConstraint::ResetIfWin(wxWindowBase *otherW)
         otherWin = (wxWindowBase *) NULL;
         return TRUE;
     }
-    else
-        return FALSE;
+
+    return FALSE;
 }
 
 // Try to satisfy constraint
@@ -1035,7 +1046,7 @@ bool wxLayoutConstraints::SatisfyConstraints(wxWindowBase *win, int *nChanges)
     Set each calculated position and size
 
  */
+
 #if WXWIN_COMPATIBILITY
 bool wxOldDoLayout(wxWindowBase *win)
 {