]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/app.cpp
better focus handling (blind fix)
[wxWidgets.git] / src / os2 / app.cpp
index bd4b47a6cfe26610e2e3b41c2a5f70a4be9e18e5..6ef2a2253d6e1220891dd821d2ab0e8d04d5440d 100644 (file)
@@ -787,15 +787,24 @@ bool wxApp::DoMessage()
         }
 #endif // wxUSE_THREADS
 
+        //
         // Process the message
-        if (!ProcessMessage((WXMSG *)&svCurrentMsg))
-        {
-            ::WinDispatchMsg(vHabmain, (PQMSG)&svCurrentMsg);
-        }
+        //
+        DoMessage((WXMSG *)&svCurrentMsg);
     }
     return TRUE;
 } // end of wxApp::DoMessage
 
+void wxApp::DoMessage(
+  WXMSG*                            pMsg
+)
+{
+    if (!ProcessMessage((WXMSG *)&svCurrentMsg))
+    {
+        ::WinDispatchMsg(vHabmain, (PQMSG)&svCurrentMsg);
+    }
+} // end of wxApp::DoMessage
+
 //////////////////////////////////////////////////////////////////////////////
 //
 // Keep trying to process messages until WM_QUIT
@@ -985,6 +994,16 @@ void wxApp::OnIdle(
     wxLog::FlushActive();
 #endif // wxUSE_LOG
 
+#if wxUSE_DC_CACHEING
+    // automated DC cache management: clear the cached DCs and bitmap
+    // if it's likely that the app has finished with them, that is, we
+    // get an idle event and we're not dragging anything.
+    if (!::WinGetKeyState(MK_LBUTTON) &&
+        !::WinGetKeyState(MK_MBUTTON) &&
+        !::WinGetKeyState(MK_RBUTTON))
+        wxDC::ClearCache();
+#endif // wxUSE_DC_CACHEING
+
     //
     // Send OnIdle events to all windows
     //