]> git.saurik.com Git - wxWidgets.git/commitdiff
don't set negative window size
authorPaul Cornett <paulcor@bullseye.com>
Sat, 9 Sep 2006 02:42:48 +0000 (02:42 +0000)
committerPaul Cornett <paulcor@bullseye.com>
Sat, 9 Sep 2006 02:42:48 +0000 (02:42 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41080 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/toplvcmn.cpp
src/generic/splitter.cpp
src/gtk/frame.cpp
src/gtk/toplevel.cpp
src/gtk/win_gtk.c
src/gtk/window.cpp

index 60376d3ebcb84e678230fd2e034a8efdb00a881e..101f64677f36cddcc435e282236825946a3aa55a 100644 (file)
@@ -350,12 +350,18 @@ void wxTopLevelWindowBase::DoLayout()
             // for whatever reasons, wxGTK wants to have a small offset - it
             // probably looks better with it?
 #ifdef __WXGTK__
-            static const int ofs = 1;
+            const int ofs = 1;
+            clientW -= 2 * ofs;
+            clientH -= 2 * ofs;
+            if (clientW < 0)
+                clientW = 0;
+            if (clientH < 0)
+                clientH = 0;
 #else
-            static const int ofs = 0;
+            const int ofs = 0;
 #endif
 
-            child->SetSize(ofs, ofs, clientW - 2*ofs, clientH - 2*ofs);
+            child->SetSize(ofs, ofs, clientW, clientH);
         }
     }
 }
index 9e357621d6aba958ba3c1a2f94779758fd804250..6e084f1696e5cd895820a1d8b2a3b7b9317921b3 100644 (file)
@@ -681,17 +681,25 @@ void wxSplitterWindow::SizeWindows()
         {
             w1 = size1;
             w2 = w - 2*border - sash - w1;
-            h1 =
+            if (w2 < 0)
+                w2 = 0;
             h2 = h - 2*border;
+            if (h2 < 0)
+                h2 = 0;
+            h1 = h2;
             x2 = size2;
             y2 = border;
         }
         else // horz splitter
         {
-            w1 =
             w2 = w - 2*border;
+            if (w2 < 0)
+                w2 = 0;
+            w1 = w2;
             h1 = size1;
             h2 = h - 2*border - sash - h1;
+            if (h2 < 0)
+                h2 = 0;
             x2 = border;
             y2 = size2;
         }
index 2d8ad5a544e375a3aa1af569a9ab8fa82dab3092..4a43ba6aeed4d3a60f31a317790ba43b46c971aa 100644 (file)
@@ -276,6 +276,8 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const
             }
         }
 #endif // wxUSE_TOOLBAR
+        if (*height < 0)
+            *height = 0;
     }
 }
 
index a43befb6c599e85816e6ffd28df341ee154b4cb2..614a4dce0af589ef047dc9a46706445c01da08e1 100644 (file)
@@ -915,18 +915,16 @@ void wxTopLevelWindowGTK::DoGetClientSize( int *width, int *height ) const
 
     if (height)
     {
-        *height = m_height;
-    
-        // mini edge
-        *height -= m_miniEdge*2 + m_miniTitle;
+        *height = m_height - 2 * m_miniEdge + m_miniTitle;
+        if (*height < 0)
+            *height = 0;
     }
     if (width)
     {
-        *width = m_width;
-    
-        *width -= m_miniEdge*2;
+        *width = m_width - 2 * m_miniEdge;
+        if (*width < 0)
+            *width = 0;
     }
-    
 }
 
 void wxTopLevelWindowGTK::DoSetClientSize( int width, int height )
index 00caf72a5f91e77d643f51c72f7a7396c46ef632..ead5ad20d65463b1774e3284cdf8feaf6f108ec7 100644 (file)
@@ -547,6 +547,10 @@ gtk_pizza_size_allocate (GtkWidget     *widget,
     y = allocation->y + border;
     w = allocation->width - border*2;
     h = allocation->height - border*2;
+    if (w < 0)
+        w = 0;
+    if (h < 0)
+        h = 0;
 
     if (GTK_WIDGET_REALIZED (widget))
     {
index a10119d5ada06e88e0edecf73d354a3c557217d2..0cdcb2b0bdd211ec9b64c884ec2edc7287dbf4ca 100644 (file)
@@ -3020,6 +3020,10 @@ void wxWindowGTK::DoGetClientSize( int *width, int *height ) const
 
         w -= dw;
         h -= dh;
+        if (w < 0)
+            w = 0;
+        if (h < 0)
+            h = 0;
     }
 
     if (width) *width = w;