]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/window.cpp
wxSystemSettings class API face lift: better names for its methods
[wxWidgets.git] / src / msw / window.cpp
index a2dca1ea29a4fcef338a514b22a3b9ddff843503..3dd8c2240ee0cfb2db9222586af92720a6d5e691 100644 (file)
@@ -1446,6 +1446,12 @@ void wxWindowMSW::DoClientToScreen(int *x, int *y) const
 
 void wxWindowMSW::DoMoveWindow(int x, int y, int width, int height)
 {
+    // TODO: is this consistent with other platforms?
+    // Still, negative width or height shouldn't be allowed
+    if (width < 0)
+        width = 0;
+    if (height < 0)
+        height = 0;
     if ( !::MoveWindow(GetHwnd(), x, y, width, height, TRUE) )
     {
         wxLogLastError(wxT("MoveWindow"));
@@ -1527,11 +1533,13 @@ void wxWindowMSW::DoSetClientSize(int width, int height)
     // will not be correct as the difference between the total and client size
     // changes - so we keep changing it until we get it right
     //
-    // normally this loop shouldn't take more than 2 iterations (usually 1 but
-    // if scrollbars [dis]appear as the result of the first call, then 2) but
-    // just to be on the safe side we check for it instead of making it an
+    // normally this loop shouldn't take more than 3 iterations (usually 1 but
+    // if scrollbars [dis]appear as the result of the first call, then 2 and it
+    // may become 3 if the window had 0 size originally and so we didn't
+    // calculate the scrollbar correction correctly during the first iteration)
+    // but just to be on the safe side we check for it instead of making it an
     // "infinite" loop (i.e. leaving break inside as the only way to get out)
-    for ( int i = 0; i < 3; i++ )
+    for ( int i = 0; i < 4; i++ )
     {
         RECT rectClient;
         ::GetClientRect(GetHwnd(), &rectClient);
@@ -1542,7 +1550,7 @@ void wxWindowMSW::DoSetClientSize(int width, int height)
             break;
         }
 
-        if ( i == 2 )
+        if ( i == 3 )
         {
             // how did it happen? maybe OnSize() handler does something really
             // strange in this class?