]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/sizer.cpp
Remvoed a yield in HitTest because of undesirable consequences
[wxWidgets.git] / src / common / sizer.cpp
index c49530577e928e6cce07a9d9eca16145941fc847..b3736d1754b474b81e5d8c2a8a00b007cab7e733 100644 (file)
@@ -355,7 +355,13 @@ bool wxSizer::Remove( int pos )
 
 void wxSizer::Fit( wxWindow *window )
 {
-    window->SetSize( GetMinWindowSize( window ) );
+    wxSize size;
+    if (window->IsTopLevel())
+        size = FitSize( window );
+    else
+        size = GetMinWindowSize( window );
+
+    window->SetSize( size );
 }
 
 void wxSizer::Layout()
@@ -366,10 +372,24 @@ void wxSizer::Layout()
 
 void wxSizer::SetSizeHints( wxWindow *window )
 {
-    wxSize size( GetMinWindowSize( window ) );
+    wxSize size = FitSize( window );
     window->SetSizeHints( size.x, size.y );
 }
 
+wxSize wxSizer::GetMaxWindowSize( wxWindow *window )
+{
+    wxSize sizeMax = wxGetDisplaySize();
+    // make the max size a bit smaller than the screen, a window which takes
+    // the entire screen doesn't look very nice neither
+    sizeMax.x *= 9;
+    sizeMax.x /= 10;
+
+    sizeMax.y *= 9;
+    sizeMax.y /= 10;
+
+    return sizeMax;
+}
+
 wxSize wxSizer::GetMinWindowSize( wxWindow *window )
 {
     wxSize minSize( GetMinSize() );
@@ -379,6 +399,20 @@ wxSize wxSizer::GetMinWindowSize( wxWindow *window )
                    minSize.y+size.y-client_size.y );
 }
 
+// Return a window size that will fit within the screens dimensions
+wxSize wxSizer::FitSize( wxWindow *window )
+{
+    wxSize size     = GetMinWindowSize( window );
+    wxSize sizeMax  = GetMaxWindowSize( window );
+
+    if ( size.x > sizeMax.x )
+        size.x = sizeMax.x;
+    if ( size.y > sizeMax.y )
+        size.y = sizeMax.y;
+
+    return size;
+}
+
 void wxSizer::SetDimension( int x, int y, int width, int height )
 {
     m_position.x = x;