X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b782f2e0f6abc7baa9a8bfc158847a89d5d12145..4fe5383d6c6463e16e2d5b6b5fefe311b33e128f:/src/msw/app.cpp?ds=sidebyside diff --git a/src/msw/app.cpp b/src/msw/app.cpp index 5a67e7a4d6..ef23125bdc 100644 --- a/src/msw/app.cpp +++ b/src/msw/app.cpp @@ -19,7 +19,6 @@ #ifdef __GNUG__ #pragma implementation "app.h" - #pragma implementation "appbase.h" #endif // For compilers that support precompilation, includes "wx.h". @@ -44,8 +43,8 @@ #include "wx/msgdlg.h" #include "wx/intl.h" #include "wx/dynarray.h" -# include "wx/wxchar.h" -# include "wx/icon.h" + #include "wx/wxchar.h" + #include "wx/icon.h" #endif #include "wx/log.h" @@ -98,10 +97,6 @@ extern wxChar *wxBuffer; extern wxChar *wxOsVersion; extern wxList *wxWinHandleList; extern wxList WXDLLEXPORT wxPendingDelete; -#if wxUSE_THREADS -extern wxList *wxPendingEvents; -extern wxCriticalSection *wxPendingEventsLocker; -#endif extern void wxSetKeyboardHook(bool doIt); extern wxCursor *g_globalCursor; @@ -132,7 +127,7 @@ HICON wxDEFAULT_MDIPARENTFRAME_ICON = (HICON) NULL; HBRUSH wxDisableButtonBrush = (HBRUSH) 0; -LRESULT APIENTRY wxWndProc(HWND, UINT, WPARAM, LPARAM); +LRESULT WXDLLEXPORT APIENTRY wxWndProc(HWND, UINT, WPARAM, LPARAM); #if defined(__WIN95__) && !defined(__TWIN32__) #define wxUSE_RICHEDIT 1 @@ -179,11 +174,8 @@ bool wxApp::Initialize() wxGetResource(wxT("wxWindows"), wxT("OsVersion"), &wxOsVersion); #endif - // I'm annoyed ... I don't know where to put this and I don't want to - // create a module for that as it's part of the core. #if wxUSE_THREADS - wxPendingEvents = new wxList(); - wxPendingEventsLocker = new wxCriticalSection(); + wxPendingEventsLocker = new wxCriticalSection; #endif wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING); @@ -234,6 +226,8 @@ bool wxApp::Initialize() g_globalCursor = new wxCursor; + // VZ: these icons are not in wx.rc anyhow (but should they?)! +#if 0 wxSTD_FRAME_ICON = LoadIcon(wxhInstance, wxT("wxSTD_FRAME")); wxSTD_MDIPARENTFRAME_ICON = LoadIcon(wxhInstance, wxT("wxSTD_MDIPARENTFRAME")); wxSTD_MDICHILDFRAME_ICON = LoadIcon(wxhInstance, wxT("wxSTD_MDICHILDFRAME")); @@ -241,6 +235,7 @@ bool wxApp::Initialize() wxDEFAULT_FRAME_ICON = LoadIcon(wxhInstance, wxT("wxDEFAULT_FRAME")); wxDEFAULT_MDIPARENTFRAME_ICON = LoadIcon(wxhInstance, wxT("wxDEFAULT_MDIPARENTFRAME")); wxDEFAULT_MDICHILDFRAME_ICON = LoadIcon(wxhInstance, wxT("wxDEFAULT_MDICHILDFRAME")); +#endif // 0 RegisterWindowClasses(); @@ -563,10 +558,10 @@ void wxApp::CleanUp() if (wxWinHandleList) delete wxWinHandleList; - // GL: I'm annoyed ... I don't know where to put this and I don't want to + // GL: I'm annoyed ... I don't know where to put this and I don't want to // create a module for that as it's part of the core. -#if wxUSE_THREADS delete wxPendingEvents; +#if wxUSE_THREADS delete wxPendingEventsLocker; // If we don't do the following, we get an apparent memory leak. ((wxEvtHandler&) wxDefaultValidator).ClearEventLocker(); @@ -628,7 +623,6 @@ int wxEntry(WXHINSTANCE hInstance, #else #undef CATCH_PROGRAM_EXCEPTIONS #endif - wxhInstance = (HINSTANCE) hInstance; if (!wxApp::Initialize()) @@ -656,6 +650,13 @@ int wxEntry(WXHINSTANCE hInstance, // but this call is provided for compatibility across platforms. wxTheApp->OnInitGui(); + // We really don't want timestamps by default, because it means + // we can't simply double-click on the error message and get to that + // line in the source. So VC++ at least, let's have a sensible default. +#ifdef __VISUALC__ + wxLog::SetTimestamp(NULL); +#endif + int retValue = 0; if ( wxTheApp->OnInit() ) @@ -931,25 +932,6 @@ bool wxApp::ProcessIdle() return event.MoreRequested(); } -#if wxUSE_THREADS -void wxApp::ProcessPendingEvents() -{ - wxNode *node = wxPendingEvents->First(); - wxCriticalSectionLocker locker(*wxPendingEventsLocker); - - while (node) - { - wxEvtHandler *handler = (wxEvtHandler *)node->Data(); - - handler->ProcessPendingEvents(); - - delete node; - node = wxPendingEvents->First(); - } -} -#endif - - void wxApp::ExitMainLoop() { m_keepGoing = FALSE; @@ -983,7 +965,7 @@ bool wxApp::ProcessMessage(WXMSG *wxmsg) while ( hWnd && !wndThis ) { hWnd = ::GetParent(hWnd); - wndThis = wxFindWinFromHandle((WXHWND)hWnd); + wndThis = wxFindWinFromHandle((WXHWND)hWnd); } // Try translations first; find the youngest window with @@ -1032,10 +1014,11 @@ void wxApp::OnIdle(wxIdleEvent& event) event.RequestMore(TRUE); } - // If they are pending events, we must process them. -#if wxUSE_THREADS + // If they are pending events, we must process them: pending events are + // either events to the threads other than main or events posted with + // wxPostEvent() functions ProcessPendingEvents(); -#endif + s_inOnIdle = FALSE; } @@ -1168,22 +1151,19 @@ void wxExit() // Yield to incoming messages bool wxYield() { + // we don't want to process WM_QUIT from here - it should be processed in + // the main event loop in order to stop it + MSG msg; - // We want to go back to the main message loop - // if we see a WM_QUIT. (?) -#ifdef __WXWINE__ - while (PeekMessage(&msg, (HWND)NULL, 0, 0, PM_NOREMOVE) && msg.message != WM_QUIT) -#else - while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) && msg.message != WM_QUIT) -#endif + while ( PeekMessage(&msg, (HWND)0, 0, 0, PM_NOREMOVE) && + msg.message != WM_QUIT ) { if ( !wxTheApp->DoMessage() ) break; } + // If they are pending events, we must process them. -#if wxUSE_THREADS wxTheApp->ProcessPendingEvents(); -#endif return TRUE; }