X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/574c939ef1c1b835a8bc65c0fe724548fa04ec49..ee682a94cb9ea835c9b74a12f17b0fb63f43dcce:/src/common/event.cpp diff --git a/src/common/event.cpp b/src/common/event.cpp index 97d84b676c..6e578317e2 100644 --- a/src/common/event.cpp +++ b/src/common/event.cpp @@ -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) @@ -219,10 +221,9 @@ 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) @@ -308,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 @@ -326,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; @@ -344,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; @@ -385,6 +387,27 @@ wxMouseEvent::wxMouseEvent(wxEventType commandType) m_linesPerAction = 0; } +void wxMouseEvent::Assign(const wxMouseEvent& event) +{ + m_eventType = event.m_eventType; + + 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 @@ -522,9 +545,32 @@ wxKeyEvent::wxKeyEvent(wxEventType type) m_altDown = FALSE; m_keyCode = 0; m_scanCode = 0; +#if wxUSE_UNICODE + m_uniChar = 0; +#endif } - +wxKeyEvent::wxKeyEvent(const wxKeyEvent& evt) + : wxEvent(evt) +{ + m_x = evt.m_x; + m_y = evt.m_y; + + m_keyCode = evt.m_keyCode; + + m_controlDown = evt.m_controlDown; + m_shiftDown = evt.m_shiftDown; + m_altDown = evt.m_altDown; + m_metaDown = evt.m_metaDown; + m_scanCode = evt.m_scanCode; + m_rawCode = evt.m_rawCode; + m_rawFlags = evt.m_rawFlags; + +#if wxUSE_UNICODE + m_uniChar = evt.m_uniChar; +#endif +} + wxWindowCreateEvent::wxWindowCreateEvent(wxWindow *win) { SetEventType(wxEVT_CREATE); @@ -728,6 +774,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__) @@ -741,12 +789,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() ) {