]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/appbase.cpp
Add wxDataViewListCtrl::{Set,Get}ItemData() methods.
[wxWidgets.git] / src / common / appbase.cpp
index 36a65ef6e92442db0778acf8c99c51ad6420140b..3671f0ee0e395a53a6b94e9336f75b4c1dec7899 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     19.06.2003 (extracted from common/appcmn.cpp)
 // RCS-ID:      $Id$
 // Copyright:   (c) 2003 Vadim Zeitlin <vadim@wxwindows.org>
-// License:     wxWindows license
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
@@ -25,7 +25,7 @@
 #endif
 
 #ifndef WX_PRECOMP
-    #ifdef __WXMSW__
+    #ifdef __WINDOWS__
         #include  "wx/msw/wrapwin.h"  // includes windows.h for MessageBox()
     #endif
     #include "wx/list.h"
     #include <typeinfo>
 #endif
 
-#ifndef __WXPALMOS5__
-#if !defined(__WXMSW__) || defined(__WXMICROWIN__)
+#if !defined(__WINDOWS__) || defined(__WXMICROWIN__)
   #include  <signal.h>      // for SIGTRAP used by wxTrap()
 #endif  //Win/Unix
 
 #include <locale.h>
-#endif // ! __WXPALMOS5__
 
 #if wxUSE_FONTMAP
     #include "wx/fontmap.h"
@@ -67,7 +65,7 @@
 #if wxDEBUG_LEVEL
     #if wxUSE_STACKWALKER
         #include "wx/stackwalk.h"
-        #ifdef __WXMSW__
+        #ifdef __WINDOWS__
             #include "wx/msw/debughlp.h"
         #endif
     #endif // wxUSE_STACKWALKER
@@ -147,14 +145,17 @@ wxAppConsoleBase::wxAppConsoleBase()
     // In unicode mode the SetTraceMasks call can cause an apptraits to be
     // created, but since we are still in the constructor the wrong kind will
     // be created for GUI apps.  Destroy it so it can be created again later.
-    delete m_traits;
-    m_traits = NULL;
+    wxDELETE(m_traits);
 #endif
 #endif
+
+    wxEvtHandler::AddFilter(this);
 }
 
 wxAppConsoleBase::~wxAppConsoleBase()
 {
+    wxEvtHandler::RemoveFilter(this);
+
     // we're being destroyed and using this object from now on may not work or
     // even crash so don't leave dangling pointers to it
     ms_appInstance = NULL;
@@ -178,7 +179,6 @@ bool wxAppConsoleBase::Initialize(int& WXUNUSED(argc), wxChar **WXUNUSED(argv))
 wxString wxAppConsoleBase::GetAppName() const
 {
     wxString name = m_appName;
-#ifndef __WXPALMOS__
     if ( name.empty() )
     {
         if ( argv )
@@ -187,7 +187,6 @@ wxString wxAppConsoleBase::GetAppName() const
             wxFileName::SplitPath(argv[0], NULL, &name, NULL);
         }
     }
-#endif // !__WXPALMOS__
     return name;
 }
 
@@ -214,11 +213,7 @@ wxEventLoopBase *wxAppConsoleBase::CreateMainLoop()
 
 void wxAppConsoleBase::CleanUp()
 {
-    if ( m_mainLoop )
-    {
-        delete m_mainLoop;
-        m_mainLoop = NULL;
-    }
+    wxDELETE(m_mainLoop);
 }
 
 // ----------------------------------------------------------------------------
@@ -350,8 +345,11 @@ bool wxAppConsoleBase::Dispatch()
 bool wxAppConsoleBase::Yield(bool onlyIfNeeded)
 {
     wxEventLoopBase * const loop = wxEventLoopBase::GetActive();
+    if ( loop )
+       return loop->Yield(onlyIfNeeded);
 
-    return loop && loop->Yield(onlyIfNeeded);
+    wxScopedPtr<wxEventLoopBase> tmpLoop(CreateMainLoop());
+    return tmpLoop->Yield(onlyIfNeeded);
 }
 
 void wxAppConsoleBase::WakeUpIdle()
@@ -375,6 +373,9 @@ bool wxAppConsoleBase::ProcessIdle()
     wxLog::FlushActive();
 #endif
 
+    // Garbage collect all objects previously scheduled for destruction.
+    DeletePendingObjects();
+
     return event.MoreRequested();
 }
 
@@ -400,7 +401,7 @@ bool wxAppConsoleBase::IsMainLoopRunning()
 int wxAppConsoleBase::FilterEvent(wxEvent& WXUNUSED(event))
 {
     // process the events normally by default
-    return -1;
+    return Event_Skip;
 }
 
 void wxAppConsoleBase::DelayPendingEventHandler(wxEvtHandler* toDelay)
@@ -514,9 +515,6 @@ void wxAppConsoleBase::ProcessPendingEvents()
 
         wxLEAVE_CRIT_SECT(m_handlersWithPendingEventsLocker);
     }
-
-    // Garbage collect all objects previously scheduled for destruction.
-    DeletePendingObjects();
 }
 
 void wxAppConsoleBase::DeletePendingEvents()
@@ -898,12 +896,12 @@ wxString wxAppTraitsBase::GetAssertStackTrace()
 {
 #if wxDEBUG_LEVEL
 
-#if !defined(__WXMSW__)
+#if !defined(__WINDOWS__)
     // on Unix stack frame generation may take some time, depending on the
     // size of the executable mainly... warn the user that we are working
     wxFprintf(stderr, "Collecting stack trace information, please wait...");
     fflush(stderr);
-#endif // !__WXMSW__
+#endif // !__WINDOWS__
 
 
     wxString stackTrace;
@@ -1004,12 +1002,21 @@ bool wxAssertIsEqual(int x, int y)
     return x == y;
 }
 
+void wxAbort()
+{
+#ifdef __WXWINCE__
+    ExitThread(3);
+#else
+    abort();
+#endif
+}
+
 #if wxDEBUG_LEVEL
 
 // break into the debugger
 void wxTrap()
 {
-#if defined(__WXMSW__) && !defined(__WXMICROWIN__)
+#if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
     DebugBreak();
 #elif defined(_MSL_USING_MW_C_HEADERS) && _MSL_USING_MW_C_HEADERS
     Debugger();
@@ -1030,7 +1037,7 @@ wxDefaultAssertHandler(const wxString& file,
 {
     // If this option is set, we should abort immediately when assert happens.
     if ( wxSystemOptions::GetOptionInt("exit-on-assert") )
-        abort();
+        wxAbort();
 
     // FIXME MT-unsafe
     static int s_bInAssert = 0;
@@ -1172,8 +1179,8 @@ static void LINKAGEMODE SetTraceMasks()
 static
 bool DoShowAssertDialog(const wxString& msg)
 {
-    // under MSW we can show the dialog even in the console mode
-#if defined(__WXMSW__) && !defined(__WXMICROWIN__)
+    // under Windows we can show the dialog even in the console mode
+#if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
     wxString msgDlg(msg);
 
     // this message is intentionally not translated -- it is for developers
@@ -1183,7 +1190,7 @@ bool DoShowAssertDialog(const wxString& msg)
               wxT("You can also choose [Cancel] to suppress ")
               wxT("further warnings.");
 
-    switch ( ::MessageBox(NULL, msgDlg.wx_str(), wxT("wxWidgets Debug Alert"),
+    switch ( ::MessageBox(NULL, msgDlg.t_str(), wxT("wxWidgets Debug Alert"),
                           MB_YESNOCANCEL | MB_ICONSTOP ) )
     {
         case IDYES:
@@ -1196,9 +1203,9 @@ bool DoShowAssertDialog(const wxString& msg)
 
         //case IDNO: nothing to do
     }
-#else // !__WXMSW__
+#else // !__WINDOWS__
     wxUnusedVar(msg);
-#endif // __WXMSW__/!__WXMSW__
+#endif // __WINDOWS__/!__WINDOWS__
 
     // continue with the asserts by default
     return false;