]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/app.cpp
use StretchDIBits() if we're drawing a DIB and not a DDB in Blit()
[wxWidgets.git] / src / os2 / app.cpp
index 7bcf7d2b7d251c9e2c198cfae71c77812ca16dbb..4d47ed155090c453d394595a8f36bbb5ffa47924 100644 (file)
@@ -9,6 +9,10 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+#ifdef __GNUG__
+    #pragma implementation "app.h"
+#endif
+
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
@@ -422,6 +426,18 @@ bool wxApp::RegisterWindowClasses(
         wxLogLastError(sError);
         return FALSE;
     }
         wxLogLastError(sError);
         return FALSE;
     }
+    if (!::WinRegisterClass( vHab
+                            ,wxCanvasClassNameNR
+                            ,wxWndProc
+                            ,CS_HITTEST | CS_SYNCPAINT
+                            ,sizeof(ULONG)
+                           ))
+    {
+        vError = ::WinGetLastError(vHab);
+        sError = wxPMErrorToStr(vError);
+        wxLogLastError(sError);
+        return FALSE;
+    }
     return TRUE;
 } // end of wxApp::RegisterWindowClasses
 
     return TRUE;
 } // end of wxApp::RegisterWindowClasses
 
@@ -597,7 +613,7 @@ int wxEntry(
     {
         if (wxTheApp->OnInit())
         {
     {
         if (wxTheApp->OnInit())
         {
-            nRetValue = wxTheApp->OnRun();
+            wxTheApp->OnRun();
         }
         // Normal exit
         wxWindow*                   pTopWindow = wxTheApp->GetTopWindow();
         }
         // Normal exit
         wxWindow*                   pTopWindow = wxTheApp->GetTopWindow();
@@ -625,7 +641,7 @@ int wxEntry(
     printf("wxTheApp->OnExit ");
     fflush(stdout);
 #endif
     printf("wxTheApp->OnExit ");
     fflush(stdout);
 #endif
-    wxTheApp->OnExit();
+    nRetValue = wxTheApp->OnExit();
 #if wxUSE_CONSOLEDEBUG
     printf("wxApp::CleanUp ");
     fflush(stdout);
 #if wxUSE_CONSOLEDEBUG
     printf("wxApp::CleanUp ");
     fflush(stdout);
@@ -667,12 +683,10 @@ wxApp::wxApp()
 {
     m_topWindow = NULL;
     wxTheApp = this;
 {
     m_topWindow = NULL;
     wxTheApp = this;
-    m_wantDebugOutput = TRUE;
 
     argc = 0;
     argv = NULL;
     m_nPrintMode = wxPRINT_WINDOWS;
 
     argc = 0;
     argv = NULL;
     m_nPrintMode = wxPRINT_WINDOWS;
-    m_exitOnFrameDelete = TRUE;
     m_bAuto3D = TRUE;
     m_hMq = 0;
     m_maxSocketHandles = 0;
     m_bAuto3D = TRUE;
     m_hMq = 0;
     m_maxSocketHandles = 0;
@@ -770,10 +784,7 @@ bool wxApp::DoMessage()
                 {
                     QMSG            vMsg = svSavedMessages[n];
 
                 {
                     QMSG            vMsg = svSavedMessages[n];
 
-                    if ( !ProcessMessage((WXMSG *)&vMsg) )
-                    {
-                        ::WinDispatchMsg(vHabmain, &vMsg);
-                    }
+                    DoMessage((WXMSG*)&vMsg);
                 }
                 svSavedMessages.Empty();
             }
                 }
                 svSavedMessages.Empty();
             }
@@ -851,13 +862,13 @@ bool wxApp::ProcessIdle()
 
 void wxApp::ExitMainLoop()
 {
 
 void wxApp::ExitMainLoop()
 {
-    m_bKeepGoing = FALSE;
-}
+    ::WinPostMsg(NULL, WM_QUIT, 0, 0);
+} // end of wxApp::ExitMainLoop
 
 bool wxApp::Pending()
 {
     return (::WinPeekMsg(vHabmain, (PQMSG)&svCurrentMsg, (HWND)NULL, 0, 0, PM_NOREMOVE) != 0);
 
 bool wxApp::Pending()
 {
     return (::WinPeekMsg(vHabmain, (PQMSG)&svCurrentMsg, (HWND)NULL, 0, 0, PM_NOREMOVE) != 0);
-}
+} // end of wxApp::Pending
 
 void wxApp::Dispatch()
 {
 
 void wxApp::Dispatch()
 {
@@ -880,28 +891,14 @@ bool wxApp::ProcessMessage(
     wxWindow*                       pWndThis = wxFindWinFromHandle((WXHWND)hWnd);
     wxWindow*                       pWnd;
 
     wxWindow*                       pWndThis = wxFindWinFromHandle((WXHWND)hWnd);
     wxWindow*                       pWnd;
 
-#if wxUSE_TOOLTIPS
-    //
-    // We must relay WM_MOUSEMOVE events to the tooltip ctrl if we want it to
-    // popup the tooltip bubbles
-    //
-    if (pWndThis && (pMsg->msg == WM_MOUSEMOVE))
-    {
-        wxToolTip*                  pToolTip = pWndThis->GetToolTip();
-        if (pToolTip)
-        {
-            pToolTip->RelayEvent(pWxmsg);
-        }
-    }
-#endif // wxUSE_TOOLTIPS
-
     //
     // Pass non-system timer messages to the wxTimerProc
     //
     if (pMsg->msg == WM_TIMER &&
         (SHORT1FROMMP(pMsg->mp1) != TID_CURSOR &&
          SHORT1FROMMP(pMsg->mp1) != TID_FLASHWINDOW &&
     //
     // Pass non-system timer messages to the wxTimerProc
     //
     if (pMsg->msg == WM_TIMER &&
         (SHORT1FROMMP(pMsg->mp1) != TID_CURSOR &&
          SHORT1FROMMP(pMsg->mp1) != TID_FLASHWINDOW &&
-         SHORT1FROMMP(pMsg->mp1) != TID_SCROLL
+         SHORT1FROMMP(pMsg->mp1) != TID_SCROLL &&
+         SHORT1FROMMP(pMsg->mp1) != 0x0000
         ))
         wxTimerProc(NULL, 0, (int)pMsg->mp1, 0);
 
         ))
         wxTimerProc(NULL, 0, (int)pMsg->mp1, 0);
 
@@ -968,19 +965,20 @@ bool wxApp::ProcessMessage(
     return FALSE;
 } // end of wxApp::ProcessMessage
 
     return FALSE;
 } // end of wxApp::ProcessMessage
 
+bool                                gbInOnIdle = FALSE;
+
 void wxApp::OnIdle(
   wxIdleEvent&                      rEvent
 )
 {
 void wxApp::OnIdle(
   wxIdleEvent&                      rEvent
 )
 {
-    static bool                     sbInOnIdle = FALSE;
 
     //
     // Avoid recursion (via ProcessEvent default case)
     //
 
     //
     // Avoid recursion (via ProcessEvent default case)
     //
-    if (sbInOnIdle)
+    if (gbInOnIdle)
         return;
 
         return;
 
-    sbInOnIdle = TRUE;
+    gbInOnIdle = TRUE;
 
     //
     // If there are pending events, we must process them: pending events
 
     //
     // If there are pending events, we must process them: pending events
@@ -1022,7 +1020,7 @@ void wxApp::OnIdle(
         //
         rEvent.RequestMore(TRUE);
     }
         //
         rEvent.RequestMore(TRUE);
     }
-    sbInOnIdle = FALSE;
+    gbInOnIdle = FALSE;
 } // end of wxApp::OnIdle
 
 // Send idle event to all top-level windows
 } // end of wxApp::OnIdle
 
 // Send idle event to all top-level windows
@@ -1175,31 +1173,6 @@ bool wxApp::Yield(bool onlyIfNeeded)
     return TRUE;
 } // end of wxYield
 
     return TRUE;
 } // end of wxYield
 
-wxIcon wxApp::GetStdIcon(
-  int                               nWhich
-) const
-{
-    switch(nWhich)
-    {
-        case wxICON_INFORMATION:
-            return wxIcon("wxICON_INFO");
-
-        case wxICON_QUESTION:
-            return wxIcon("wxICON_QUESTION");
-
-        case wxICON_EXCLAMATION:
-            return wxIcon("wxICON_WARNING");
-
-        default:
-            wxFAIL_MSG(wxT("requested non existent standard icon"));
-            // still fall through
-
-        case wxICON_HAND:
-            return wxIcon("wxICON_ERROR");
-    }
-    return wxIcon("wxICON_ERROR");
-} // end of wxApp::GetStdIcon
-
 int wxApp::AddSocketHandler(int handle, int mask,
                             void (*callback)(void*), void * gsock)
 {
 int wxApp::AddSocketHandler(int handle, int mask,
                             void (*callback)(void*), void * gsock)
 {