]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/event.cpp
fixed wxStrrchr(s, '\0') bug, added const and non const versions of wxStrchr, wxStrrc...
[wxWidgets.git] / src / common / event.cpp
index df2d8c44770c9246037ed7b86fc0bf7c93aea5b3..60d6cf3dcbe9ebc26fd277e21ced7b65fec97d02 100644 (file)
@@ -88,6 +88,7 @@ IMPLEMENT_ABSTRACT_CLASS(wxEvent, wxObject)
     IMPLEMENT_DYNAMIC_CLASS(wxWindowDestroyEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxHelpEvent, wxCommandEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxContextMenuEvent, wxCommandEvent)
+    IMPLEMENT_DYNAMIC_CLASS(wxMouseCaptureChangedEvent, wxEvent)
 #endif // wxUSE_GUI
 
 const wxEventTable *wxEvtHandler::GetEventTable() const
@@ -189,6 +190,7 @@ DEFINE_EVENT_TYPE(wxEVT_SCROLL_PAGEUP)
 DEFINE_EVENT_TYPE(wxEVT_SCROLL_PAGEDOWN)
 DEFINE_EVENT_TYPE(wxEVT_SCROLL_THUMBTRACK)
 DEFINE_EVENT_TYPE(wxEVT_SCROLL_THUMBRELEASE)
+DEFINE_EVENT_TYPE(wxEVT_SCROLL_ENDSCROLL)
 
 // Scroll events from wxWindow
 DEFINE_EVENT_TYPE(wxEVT_SCROLLWIN_TOP)
@@ -307,14 +309,15 @@ wxEvent::wxEvent(int theId, wxEventType commandType )
 }
 
 wxEvent::wxEvent(const wxEvent &src)
+    : wxObject()
+    , m_eventObject(src.m_eventObject)
+    , m_eventType(src.m_eventType)
+    , m_timeStamp(src.m_timeStamp)
+    , m_id(src.m_id)
+    , m_callbackUserData(src.m_callbackUserData)
+    , m_skipped(src.m_skipped)
+    , m_isCommandEvent(src.m_isCommandEvent)
 {
-    m_eventType = src.m_eventType;
-    m_eventObject = src.m_eventObject;
-    m_timeStamp = src.m_timeStamp;
-    m_id = src.m_id;
-    m_skipped = src.m_skipped;
-    m_callbackUserData = src.m_callbackUserData;
-    m_isCommandEvent = src.m_isCommandEvent;
 }
 
 #if wxUSE_GUI
@@ -325,7 +328,7 @@ wxEvent::wxEvent(const wxEvent &src)
  */
 
 wxCommandEvent::wxCommandEvent(wxEventType commandType, int theId)
-  : wxEvent( theId, commandType )
+  : wxEvent(theId, commandType)
 {
     m_clientData = (char *) NULL;
     m_clientObject = (wxClientData *) NULL;
@@ -343,7 +346,7 @@ wxScrollEvent::wxScrollEvent(wxEventType commandType,
                              int id,
                              int pos,
                              int orient)
-             : wxCommandEvent(commandType, id)
+    : wxCommandEvent(commandType, id)
 {
     m_extraLong = orient;
     m_commandInt = pos;
@@ -384,6 +387,25 @@ wxMouseEvent::wxMouseEvent(wxEventType commandType)
     m_linesPerAction = 0;
 }
 
+void wxMouseEvent::Assign(const wxMouseEvent& event)
+{
+    m_x = event.m_x;
+    m_y = event.m_y;
+
+    m_leftDown = event.m_leftDown;
+    m_middleDown = event.m_middleDown;
+    m_rightDown = event.m_rightDown;
+
+    m_controlDown = event.m_controlDown;
+    m_shiftDown = event.m_shiftDown;
+    m_altDown = event.m_altDown;
+    m_metaDown = event.m_metaDown;
+
+    m_wheelRotation = event.m_wheelRotation;
+    m_wheelDelta = event.m_wheelDelta;
+    m_linesPerAction = event.m_linesPerAction;
+}
+
 // True if was a button dclick event (1 = left, 2 = middle, 3 = right)
 // or any button dclick event (but = -1)
 bool wxMouseEvent::ButtonDClick(int but) const
@@ -742,12 +764,32 @@ bool wxEvtHandler::ProcessEvent(wxEvent& event)
     info = CLASSINFO(wxWindow);
 #endif
 
-    wxASSERT_MSG( m_isWindow == IsKindOf(info),
-                  wxString(GetClassInfo()->GetClassName()) + _T(" should [not] be a window but it is [not]") );
-#endif
+    if ( m_isWindow != IsKindOf(info) )
+    {
+        wxString msg = GetClassInfo()->GetClassName();
+        msg += _T(" should [not] be a window but it is [not]");
+
+        wxFAIL_MSG( msg );
+    }
+
+#endif // __WXDEBUG__
 
 #endif // wxUSE_GUI
 
+    // allow the application to hook into event processing
+    if ( wxTheApp )
+    {
+        int rc = wxTheApp->FilterEvent(event);
+        if ( rc != -1 )
+        {
+            wxASSERT_MSG( rc == 1 || rc == 0,
+                          _T("unexpected wxApp::FilterEvent return value") );
+
+            return rc != 0;
+        }
+        //else: proceed normally
+    }
+
     // An event handler can be enabled or disabled
     if ( GetEvtHandlerEnabled() )
     {