]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/app.cpp
Fix so OGL can build without wxBuffer
[wxWidgets.git] / src / os2 / app.cpp
index 5d137de3d3ce21849e89993f46ff799a4ed1abf0..8062159328e7df5487c74134212a5e45281e3974 100644 (file)
@@ -253,22 +253,6 @@ bool wxApp::Initialize(
   #endif //wxUSE_CONSOLEDEBUG
 #endif
 
-    //
-    // OS2 has to have an anchorblock
-    //
-    vHab = WinInitialize(0);
-
-    if (!vHab)
-        return FALSE;
-    else
-        vHabmain = vHab;
-
-    // Some people may wish to use this, but
-    // probably it shouldn't be here by default.
-#ifdef __WXDEBUG__
-    //    wxRedirectIOToConsole();
-#endif
-
     wxBuffer = new wxChar[1500]; // FIXME; why?
 
     wxClassInfo::InitializeClasses();
@@ -289,7 +273,22 @@ bool wxApp::Initialize(
 
     wxBitmap::InitStandardHandlers();
 
-    RegisterWindowClasses(vHab);
+    //
+    // OS2 has to have an anchorblock
+    //
+    vHab = WinInitialize(0);
+
+    if (!vHab)
+        return FALSE;
+    else
+        vHabmain = vHab;
+
+    // Some people may wish to use this, but
+    // probably it shouldn't be here by default.
+#ifdef __WXDEBUG__
+    //    wxRedirectIOToConsole();
+#endif
+
     wxWinHandleList = new wxList(wxKEY_INTEGER);
 
     // This is to foil optimizations in Visual C++ that throw out dummy.obj.
@@ -304,6 +303,7 @@ bool wxApp::Initialize(
     wxModule::RegisterModules();
     if (!wxModule::InitializeModules())
         return FALSE;
+    RegisterWindowClasses(vHab);
     return TRUE;
 } // end of wxApp::Initialize
 
@@ -413,7 +413,7 @@ bool wxApp::RegisterWindowClasses(
     if (!::WinRegisterClass( vHab
                             ,wxCanvasClassName
                             ,wxWndProc
-                            ,CS_SIZEREDRAW | CS_HITTEST | CS_SYNCPAINT | CS_CLIPCHILDREN
+                            ,CS_SIZEREDRAW | CS_HITTEST | CS_SYNCPAINT
                             ,sizeof(ULONG)
                            ))
     {
@@ -896,11 +896,26 @@ bool wxApp::ProcessMessage(
 #endif // wxUSE_TOOLTIPS
 
     //
-    // We must relay Timer events to wxTimer's processing function
+    // Pass non-system timer messages to the wxTimerProc
     //
-    if (pMsg->msg == WM_TIMER)
+    if (pMsg->msg == WM_TIMER &&
+        (SHORT1FROMMP(pMsg->mp1) != TID_CURSOR &&
+         SHORT1FROMMP(pMsg->mp1) != TID_FLASHWINDOW &&
+         SHORT1FROMMP(pMsg->mp1) != TID_SCROLL &&
+         SHORT1FROMMP(pMsg->mp1) != 0x0000
+        ))
         wxTimerProc(NULL, 0, (int)pMsg->mp1, 0);
 
+    //
+    // Allow the window to prevent certain messages from being
+    // translated/processed (this is currently used by wxTextCtrl to always
+    // grab Ctrl-C/V/X, even if they are also accelerators in some parent)
+    //
+    if (pWndThis && !pWndThis->OS2ShouldPreProcessMessage(pWxmsg))
+    {
+        return FALSE;
+    }
+
     //
     // For some composite controls (like a combobox), wndThis might be NULL
     // because the subcontrol is not a wxWindow, but only the control itself