]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/basemsw.cpp
minimize overlay area to avoid eg scrolling artifacts when using a caret
[wxWidgets.git] / src / msw / basemsw.cpp
index 6120c9e472e2032093b54508b9b094b710d0e228..033d3a76b2a5051d559f74acbcf214aea7b5a58a 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     22.06.2003
 // RCS-ID:      $Id$
 // Copyright:   (c) 2003 Vadim Zeitlin <vadim@wxwindows.org>
-// License:     wxWindows license
+// License:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
 #endif //WX_PRECOMP
 
 #include "wx/apptrait.h"
+// MBN: this is a workaround for MSVC 5: if it is not #included in
+// some wxBase file, wxRecursionGuard methods won't be exported from
+// wxBase.dll, and MSVC 5 will give linker errors
+#include "wx/recguard.h"
 
 #include "wx/msw/private.h"
 
 
 void wxConsoleAppTraits::AlwaysYield()
 {
+    // we need to use special logic to deal with WM_PAINT: as this pseudo
+    // message is generated automatically as long as there are invalidated
+    // windows belonging to this thread, we'd never return if we waited here
+    // until we have no more of them left. OTOH, this message is always the
+    // last one in the queue, so we can safely return as soon as we detect it
     MSG msg;
     while ( ::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) )
-        ;
+    {
+        if ( msg.message == WM_PAINT )
+            break;
+    }
 }
 
 void *wxConsoleAppTraits::BeforeChildWaitLoop()