]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/event.cpp
key handling
[wxWidgets.git] / src / common / event.cpp
index 425df9d857ac5fb0e7d0121d6e9fcf26af593d76..6265f0c7de7477a0750f96b43956c242c74e6700 100644 (file)
@@ -308,14 +308,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
@@ -326,7 +327,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;
@@ -344,7 +345,7 @@ wxScrollEvent::wxScrollEvent(wxEventType commandType,
                              int id,
                              int pos,
                              int orient)
-             : wxCommandEvent(commandType, id)
+    : wxCommandEvent(commandType, id)
 {
     m_extraLong = orient;
     m_commandInt = pos;
@@ -743,12 +744,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() )
     {