]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/event.cpp
key handling
[wxWidgets.git] / src / common / event.cpp
index 914df7085594ddbd5a393baeb4ca2291bd985017..6265f0c7de7477a0750f96b43956c242c74e6700 100644 (file)
@@ -79,6 +79,7 @@ IMPLEMENT_ABSTRACT_CLASS(wxEvent, wxObject)
     IMPLEMENT_DYNAMIC_CLASS(wxInitDialogEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxSetCursorEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxSysColourChangedEvent, wxEvent)
+    IMPLEMENT_DYNAMIC_CLASS(wxDisplayChangedEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxUpdateUIEvent, wxCommandEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxNavigationKeyEvent, wxCommandEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxPaletteChangedEvent, wxEvent)
@@ -87,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
@@ -218,12 +220,12 @@ DEFINE_EVENT_TYPE(wxEVT_PAINT)
 DEFINE_EVENT_TYPE(wxEVT_ERASE_BACKGROUND)
 DEFINE_EVENT_TYPE(wxEVT_NC_PAINT)
 DEFINE_EVENT_TYPE(wxEVT_PAINT_ICON)
-DEFINE_EVENT_TYPE(wxEVT_MENU_CHAR)
-DEFINE_EVENT_TYPE(wxEVT_MENU_INIT)
+DEFINE_EVENT_TYPE(wxEVT_MENU_OPEN)
+DEFINE_EVENT_TYPE(wxEVT_MENU_CLOSE)
 DEFINE_EVENT_TYPE(wxEVT_MENU_HIGHLIGHT)
-DEFINE_EVENT_TYPE(wxEVT_POPUP_MENU_INIT)
 DEFINE_EVENT_TYPE(wxEVT_CONTEXT_MENU)
 DEFINE_EVENT_TYPE(wxEVT_SYS_COLOUR_CHANGED)
+DEFINE_EVENT_TYPE(wxEVT_DISPLAY_CHANGED)
 DEFINE_EVENT_TYPE(wxEVT_SETTING_CHANGED)
 DEFINE_EVENT_TYPE(wxEVT_QUERY_NEW_PALETTE)
 DEFINE_EVENT_TYPE(wxEVT_PALETTE_CHANGED)
@@ -306,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
@@ -324,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;
@@ -342,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;
@@ -726,6 +729,8 @@ bool wxEvtHandler::ProcessEvent(wxEvent& event)
     info = CLASSINFO(wxWindowMSW);
 #  elif defined(__WXGTK__)
     info = CLASSINFO(wxWindowGTK);
+#  elif defined(__WXX11__)
+    info = CLASSINFO(wxWindowX11);
 #  elif defined(__WXMGL__)
     info = CLASSINFO(wxWindowMGL);
 #  elif defined(__WXPM__)
@@ -739,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() )
     {