/////////////////////////////////////////////////////////////////////////////
-// Name: layout.cpp
+// Name: src/common/layout.cpp
// Purpose: Constraint layout system classes
// Author: Julian Smart
// Modified by:
// Created: 04/01/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
-// Licence: wxWindows licence
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// =============================================================================
// headers
// ----------------------------------------------------------------------------
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma implementation "layout.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
- #pragma hdrstop
+ #pragma hdrstop
#endif
+#if wxUSE_CONSTRAINTS
+
+#include "wx/layout.h"
+
#ifndef WX_PRECOMP
- #include "wx/defs.h"
+ #include "wx/window.h"
+ #include "wx/utils.h"
+ #include "wx/dialog.h"
+ #include "wx/msgdlg.h"
+ #include "wx/intl.h"
#endif
-#if wxUSE_CONSTRAINTS
-#ifndef WX_PRECOMP
- #include "wx/window.h"
- #include "wx/utils.h"
- #include "wx/dialog.h"
- #include "wx/msgdlg.h"
- #include "wx/intl.h"
+IMPLEMENT_DYNAMIC_CLASS(wxIndividualLayoutConstraint, wxObject)
+IMPLEMENT_DYNAMIC_CLASS(wxLayoutConstraints, wxObject)
+
+
+inline void wxGetAsIs(wxWindowBase* win, int* w, int* h)
+{
+#if 1
+ // The old way. Works for me.
+ win->GetSize(w, h);
#endif
-#include "wx/layout.h"
+#if 0
+ // Vadim's change. Breaks wxPython's LayoutAnchors
+ win->GetBestSize(w, h);
+#endif
- IMPLEMENT_DYNAMIC_CLASS(wxIndividualLayoutConstraint, wxObject)
- IMPLEMENT_DYNAMIC_CLASS(wxLayoutConstraints, wxObject)
+#if 0
+ // Proposed compromise. Doesn't work.
+ int sw, sh, bw, bh;
+ win->GetSize(&sw, &sh);
+ win->GetBestSize(&bw, &bh);
+ if (w)
+ *w = wxMax(sw, bw);
+ if (h)
+ *h = wxMax(sh, bh);
+#endif
+}
wxIndividualLayoutConstraint::wxIndividualLayoutConstraint()
percent = 0;
otherEdge = wxTop;
done = false;
- otherWin = (wxWindowBase *) NULL;
-}
-
-wxIndividualLayoutConstraint::~wxIndividualLayoutConstraint()
-{
+ otherWin = NULL;
}
void wxIndividualLayoutConstraint::Set(wxRelationship rel, wxWindowBase *otherW, wxEdge otherE, int val, int marg)
value = 0;
percent = 0;
otherEdge = wxTop;
- otherWin = (wxWindowBase *) NULL;
+ otherWin = NULL;
return true;
}
{
int x, y;
int w, h;
- win->GetSize(&w, &h);
+ wxGetAsIs(win, &w, &h);
win->GetPosition(&x, &y);
value = x + w;
done = true;
{
int x, y;
int w, h;
- win->GetSize(&w, &h);
+ wxGetAsIs(win, &w, &h);
win->GetPosition(&x, &y);
value = h + y;
done = true;
if (win)
{
int h;
- win->GetSize(&value, &h);
+ wxGetAsIs(win, &value, &h);
done = true;
return true;
}
if (win)
{
int w;
- win->GetSize(&w, &value);
+ wxGetAsIs(win, &w, &value);
done = true;
return true;
}
height.SetEdge(wxHeight);
}
-wxLayoutConstraints::~wxLayoutConstraints()
-{
-}
-
bool wxLayoutConstraints::SatisfyConstraints(wxWindowBase *win, int *nChanges)
{
int noChanges = 0;