]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/app.cpp
better focus handling (blind fix)
[wxWidgets.git] / src / os2 / app.cpp
index 7daefe297d7061bb4fc95ad5bdae262b837e15fc..6ef2a2253d6e1220891dd821d2ab0e8d04d5440d 100644 (file)
@@ -44,6 +44,7 @@
 
 #else
 
 
 #else
 
+#include <nerrno.h>
 #include <ioctl.h>
 #include <select.h>
 
 #include <ioctl.h>
 #include <select.h>
 
@@ -786,15 +787,24 @@ bool wxApp::DoMessage()
         }
 #endif // wxUSE_THREADS
 
         }
 #endif // wxUSE_THREADS
 
+        //
         // Process the message
         // Process the message
-        if (!ProcessMessage((WXMSG *)&svCurrentMsg))
-        {
-            ::WinDispatchMsg(vHabmain, (PQMSG)&svCurrentMsg);
-        }
+        //
+        DoMessage((WXMSG *)&svCurrentMsg);
     }
     return TRUE;
 } // end of wxApp::DoMessage
 
     }
     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
 //////////////////////////////////////////////////////////////////////////////
 //
 // Keep trying to process messages until WM_QUIT
@@ -984,6 +994,16 @@ void wxApp::OnIdle(
     wxLog::FlushActive();
 #endif // wxUSE_LOG
 
     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
     //
     //
     // Send OnIdle events to all windows
     //