]> git.saurik.com Git - wxWidgets.git/commitdiff
moved SetBestSize() to .cpp file; set min size from it
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 3 May 2004 12:33:31 +0000 (12:33 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 3 May 2004 12:33:31 +0000 (12:33 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27072 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/window.h
src/common/wincmn.cpp

index d081cd409c55261c41a1f7dfe8642dc549d80737..28ad751f8e5b3c885a7fda387ac08bea87a3e044 100644 (file)
@@ -93,7 +93,7 @@ struct WXDLLEXPORT wxVisualAttributes
 
 // different window variants, on platforms like eg mac uses different
 // rendering sizes
-enum wxWindowVariant 
+enum wxWindowVariant
 {
     wxWINDOW_VARIANT_NORMAL,  // Normal size
     wxWINDOW_VARIANT_SMALL,   // Smaller size (about 25 % smaller than normal)
@@ -190,7 +190,7 @@ public:
     // sets the window variant, calls internally DoSetVariant if variant has changed
     void SetWindowVariant( wxWindowVariant variant ) ;
     wxWindowVariant GetWindowVariant() const { return m_windowVariant ; }
-        
+
 
         // window id uniquely identifies the window among its siblings unless
         // it is -1 which means "don't care"
@@ -365,7 +365,7 @@ public:
         // Override this method to control the values given to Sizers etc.
     virtual wxSize GetMaxSize() const { return wxSize( m_maxWidth, m_maxHeight ); }
     virtual wxSize GetMinSize() const { return wxSize( m_minWidth, m_minHeight ); }
-    
+
         // Methods for accessing the virtual size of a window.  For most
         // windows this is just the client area of the window, but for
         // some like scrolled windows it is more or less independent of
@@ -453,7 +453,7 @@ public:
         // not all windows/controls can do this without looking wrong.
     virtual void ApplyParentThemeBackground(const wxColour& WXUNUSED(bg))
         { /* do nothing */ }
-    
+
 
     // focus and keyboard handling
     // ---------------------------
@@ -1111,9 +1111,6 @@ protected:
     wxAccessible*       m_accessible;
 #endif
 
-    // Initial window size, used as minimal size in Sizers
-    wxSize              m_initialSize;
-    
     // Virtual size (scrolling)
     wxSize                m_virtualSize;
 
@@ -1121,7 +1118,7 @@ protected:
     int                   m_minVirtualHeight;
     int                   m_maxVirtualWidth;
     int                   m_maxVirtualHeight;
-    
+
     wxWindowVariant       m_windowVariant ;
 
     // override this to change the default (i.e. used when no style is
@@ -1141,22 +1138,7 @@ protected:
     // smarter SetSize / convenience function for expanding wxDefaultSize.
     // Note that it does not influence the value returned by GetBestSize
     // at all.
-    void SetBestSize(const wxSize& size)
-    {
-        // the size only needs to be changed if the current size is incomplete,
-        // i.e. one of the components was specified as default -- so if both
-        // were given, simply don't do anything
-        if ( size.x == -1 || size.y == -1 )
-        {
-            wxSize sizeBest = DoGetBestSize();
-            if ( size.x != -1 )
-                sizeBest.x = size.x;
-            if ( size.y != -1 )
-                sizeBest.y = size.y;
-
-            SetSize(sizeBest);
-        }
-    }
+    void SetBestSize(const wxSize& size);
 
     // more pure virtual functions
     // ---------------------------
index 6b6b35ab28ef78aa878c10b1df26ecef889a161d..09cc4d70afdb4d95a1871ecdd522ed31d21cd528 100644 (file)
@@ -115,8 +115,6 @@ wxWindowBase::wxWindowBase()
     m_parent = (wxWindow *)NULL;
     m_windowId = wxID_ANY;
 
-    m_initialSize = wxDefaultSize;
-    
     // no constraints on the minimal window size
     m_minWidth =
     m_minHeight =
@@ -195,7 +193,7 @@ wxWindowBase::wxWindowBase()
 bool wxWindowBase::CreateBase(wxWindowBase *parent,
                               wxWindowID id,
                               const wxPoint& WXUNUSED(pos),
-                              const wxSize& size,
+                              const wxSize& WXUNUSED(size),
                               long style,
                               const wxValidator& wxVALIDATOR_PARAM(validator),
                               const wxString& name)
@@ -224,10 +222,6 @@ bool wxWindowBase::CreateBase(wxWindowBase *parent,
     SetWindowStyleFlag(style);
     SetParent(parent);
 
-    // Save the size passed to the ctor (if any.)  This will be used later as
-    // the minimal size if the window is added to a sizer.
-    m_initialSize = size;
-    
 #if wxUSE_VALIDATORS
     SetValidator(validator);
 #endif // wxUSE_VALIDATORS
@@ -600,6 +594,27 @@ wxSize wxWindowBase::DoGetBestSize() const
     }
 }
 
+void wxWindowBase::SetBestSize(const wxSize& size)
+{
+    // the size only needs to be changed if the current size is incomplete,
+    // i.e. one of the components was specified as default -- so if both
+    // were given, simply don't do anything
+    if ( size.x == -1 || size.y == -1 )
+    {
+        wxSize sizeBest = DoGetBestSize();
+        if ( size.x != -1 )
+            sizeBest.x = size.x;
+        if ( size.y != -1 )
+            sizeBest.y = size.y;
+
+        SetSize(sizeBest);
+
+        // don't shrink the control below its best size
+        m_minWidth = sizeBest.x;
+        m_minHeight = sizeBest.y;
+    }
+}
+
 // by default the origin is not shifted
 wxPoint wxWindowBase::GetClientAreaOrigin() const
 {
@@ -1628,7 +1643,7 @@ void wxWindowBase::SetSizerAndFit(wxSizer *sizer, bool deleteOld)
     sizer->SetSizeHints( (wxWindow*) this );
 }
 
-   
+
 void wxWindowBase::SetContainingSizer(wxSizer* sizer)
 {
     // adding a window to a sizer twice is going to result in fatal and
@@ -1637,17 +1652,10 @@ void wxWindowBase::SetContainingSizer(wxSizer* sizer)
     // pointer; so try to detect this as early as possible
     wxASSERT_MSG( !sizer || m_containingSizer != sizer,
                   _T("Adding a window to the same sizer twice?") );
-    
-    m_containingSizer = sizer;
 
-    // If there was an initial size for this window, and if a minsize has not
-    // been set, then set the initial size as the minsize.  This helps with
-    // sizer layout when a larger than GetBestSize size is needed for
-    // controls.
-    if (m_initialSize != wxDefaultSize && GetMinSize() == wxDefaultSize)
-        SetSizeHints(m_initialSize);
+    m_containingSizer = sizer;
 }
-   
+
 #if wxUSE_CONSTRAINTS
 
 void wxWindowBase::SatisfyConstraints()