]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/app.cpp
Popup Menu processing.
[wxWidgets.git] / src / os2 / app.cpp
index cdc874ea903e75770c0cd7dfe1a4ab6e249a03b4..7bcf7d2b7d251c9e2c198cfae71c77812ca16dbb 100644 (file)
@@ -96,16 +96,6 @@ HAB                                 vHabmain = NULLHANDLE;
 QMSG                                svCurrentMsg;
 wxApp*                              wxTheApp = NULL;
 
-// NB: all "NoRedraw" classes must have the same names as the "normal" classes
-//     with NR suffix - wxWindow::OS2Create() supposes this
-wxChar wxFrameClassName[]                 = wxT("wxFrameClass");
-wxChar wxFrameClassNameNoRedraw[]         = wxT("wxFrameClassNR");
-wxChar wxMDIFrameClassName[]              = wxT("wxMDIFrameClass");
-wxChar wxMDIFrameClassNameNoRedraw[]      = wxT("wxMDIFrameClassNR");
-wxChar wxMDIChildFrameClassName[]         = wxT("wxMDIChildFrameClass");
-wxChar wxMDIChildFrameClassNameNoRedraw[] = wxT("wxMDIChildFrameClassNR");
-wxChar wxPanelClassName[]                 = wxT("wxPanelClass");
-wxChar wxCanvasClassName[]                = wxT("wxCanvasClass");
 
 HICON wxSTD_FRAME_ICON          = (HICON) NULL;
 HICON wxSTD_MDICHILDFRAME_ICON  = (HICON) NULL;
@@ -263,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();
@@ -299,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.
@@ -314,6 +303,7 @@ bool wxApp::Initialize(
     wxModule::RegisterModules();
     if (!wxModule::InitializeModules())
         return FALSE;
+    RegisterWindowClasses(vHab);
     return TRUE;
 } // end of wxApp::Initialize
 
@@ -423,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)
                            ))
     {
@@ -906,11 +896,25 @@ 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
+        ))
         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