]> git.saurik.com Git - wxWidgets.git/commitdiff
DoSetClientSize() may take 4 iterations to set the right size sometimes, not 3
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 24 Dec 2001 16:26:47 +0000 (16:26 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 24 Dec 2001 16:26:47 +0000 (16:26 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13186 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/msw/window.cpp

index 4fdf1856d8fcb537fb0a1d4f225abc9ae8766cb4..3dd8c2240ee0cfb2db9222586af92720a6d5e691 100644 (file)
@@ -1533,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);
@@ -1548,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?