X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bb6290e3514a84a7b50860d1c75d4623696ff601..5dcf05ae082a2da39102dec13ab3ad4c483221c8:/src/common/event.cpp diff --git a/src/common/event.cpp b/src/common/event.cpp index 945860f5c9..402ee199c2 100644 --- a/src/common/event.cpp +++ b/src/common/event.cpp @@ -35,6 +35,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxEvtHandler, wxObject) IMPLEMENT_ABSTRACT_CLASS(wxEvent, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxCommandEvent, wxEvent) +IMPLEMENT_DYNAMIC_CLASS(wxNotifyEvent, wxCommandEvent) IMPLEMENT_DYNAMIC_CLASS(wxScrollEvent, wxCommandEvent) IMPLEMENT_DYNAMIC_CLASS(wxMouseEvent, wxEvent) IMPLEMENT_DYNAMIC_CLASS(wxKeyEvent, wxEvent) @@ -54,14 +55,24 @@ IMPLEMENT_DYNAMIC_CLASS(wxActivateEvent, wxEvent) IMPLEMENT_DYNAMIC_CLASS(wxInitDialogEvent, wxEvent) IMPLEMENT_DYNAMIC_CLASS(wxSysColourChangedEvent, wxEvent) IMPLEMENT_DYNAMIC_CLASS(wxIdleEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxUpdateUIEvent, wxEvent) +IMPLEMENT_DYNAMIC_CLASS(wxUpdateUIEvent, wxCommandEvent) +IMPLEMENT_DYNAMIC_CLASS(wxNavigationKeyEvent, wxCommandEvent) +IMPLEMENT_DYNAMIC_CLASS(wxPaletteChangedEvent, wxEvent) +IMPLEMENT_DYNAMIC_CLASS(wxQueryNewPaletteEvent, wxEvent) const wxEventTable *wxEvtHandler::GetEventTable() const { return &wxEvtHandler::sm_eventTable; } const wxEventTable wxEvtHandler::sm_eventTable = - { NULL, &wxEvtHandler::sm_eventTableEntries[0] }; - -const wxEventTableEntry wxEvtHandler::sm_eventTableEntries[] = { { 0, 0, 0, NULL } }; + { (const wxEventTable *) NULL, &wxEvtHandler::sm_eventTableEntries[0] }; + +const wxEventTableEntry wxEvtHandler::sm_eventTableEntries[] = { { 0, 0, 0, +#ifdef __SGI_CC__ +// stupid SGI compiler --- offer aug 98 + 0L } +#else + NULL } +#endif +}; #endif @@ -77,12 +88,12 @@ const wxEventTableEntry wxEvtHandler::sm_eventTableEntries[] = { { 0, 0, 0, NULL wxEvent::wxEvent(int theId) { m_eventType = wxEVT_NULL; - m_eventObject = NULL; - m_eventHandle = NULL; + m_eventObject = (wxObject *) NULL; + m_eventHandle = (char *) NULL; m_timeStamp = 0; m_id = theId; m_skipped = FALSE; - m_callbackUserData = NULL; + m_callbackUserData = (wxObject *) NULL; } /* @@ -93,11 +104,12 @@ wxEvent::wxEvent(int theId) wxCommandEvent::wxCommandEvent(wxEventType commandType, int theId) { m_eventType = commandType; - m_clientData = NULL; + m_clientData = (char *) NULL; + m_clientObject = (wxClientData *) NULL; m_extraLong = 0; m_commandInt = 0; m_id = theId; - m_commandString = NULL; + m_commandString = (char *) NULL; } /* @@ -124,6 +136,11 @@ wxMouseEvent::wxMouseEvent(wxEventType commandType) m_altDown = FALSE; m_controlDown = FALSE; m_shiftDown = FALSE; + m_leftDown = FALSE; + m_rightDown = FALSE; + m_middleDown = FALSE; + m_x = 0; + m_y = 0; } // True if was a button dclick event (1 = left, 2 = middle, 3 = right) @@ -221,8 +238,8 @@ bool wxMouseEvent::ButtonIsDown(int but) const // Find the logical position of the event given the DC wxPoint wxMouseEvent::GetLogicalPosition(const wxDC& dc) const { - wxPoint pt(dc.DeviceToLogicalX(m_x), dc.DeviceToLogicalY(m_y)); - return pt; + wxPoint pt(dc.DeviceToLogicalX(m_x), dc.DeviceToLogicalY(m_y)); + return pt; } @@ -247,11 +264,10 @@ wxKeyEvent::wxKeyEvent(wxEventType type) wxEvtHandler::wxEvtHandler(void) { - m_clientData = NULL; - m_nextHandler = NULL; - m_previousHandler = NULL; + m_nextHandler = (wxEvtHandler *) NULL; + m_previousHandler = (wxEvtHandler *) NULL; m_enabled = TRUE; - m_dynamicEvents = NULL; + m_dynamicEvents = (wxList *) NULL; } wxEvtHandler::~wxEvtHandler(void) @@ -304,14 +320,14 @@ bool wxEvtHandler::ProcessEvent(wxEvent& event) // chain of event handlers. if (IsKindOf(CLASSINFO(wxWindow))) { - wxWindow *win = (wxWindow *)this; - - // Can only use the validator of the window which - // is receiving the event - if ( (win == event.GetEventObject()) && - win->GetValidator() && - win->GetValidator()->ProcessEvent(event)) - return TRUE; + wxWindow *win = (wxWindow *)this; + + // Can only use the validator of the window which + // is receiving the event + if ( (win == event.GetEventObject()) && + win->GetValidator() && + win->GetValidator()->ProcessEvent(event)) + return TRUE; } // Search upwards through the inheritance hierarchy @@ -326,8 +342,8 @@ bool wxEvtHandler::ProcessEvent(wxEvent& event) // Try going down the event handler chain if ( GetNextHandler() ) { - if ( GetNextHandler()->ProcessEvent(event) ) - return TRUE; + if ( GetNextHandler()->ProcessEvent(event) ) + return TRUE; } // Carry on up the parent-child hierarchy, @@ -336,13 +352,16 @@ bool wxEvtHandler::ProcessEvent(wxEvent& event) if (IsKindOf(CLASSINFO(wxWindow)) && event.IsKindOf(CLASSINFO(wxCommandEvent))) { wxWindow *win = (wxWindow *)this; - wxWindow *parent = win->GetParent(); + wxWindow *parent = win->GetParent(); if (parent && !parent->IsBeingDeleted()) return win->GetParent()->GetEventHandler()->ProcessEvent(event); } - // Last try - application object - if (wxTheApp && this != wxTheApp && wxTheApp->ProcessEvent(event)) + // Last try - application object. + // Special case: don't pass wxEVT_IDLE to wxApp, since it'll always swallow it. + // wxEVT_IDLE is sent explicitly to wxApp so it will be processed appropriately + // via SearchEventTable. + if (wxTheApp && this != wxTheApp && (event.GetEventType() != wxEVT_IDLE) && wxTheApp->ProcessEvent(event)) return TRUE; else return FALSE; @@ -352,25 +371,25 @@ bool wxEvtHandler::SearchEventTable(wxEventTable& table, wxEvent& event) { int i = 0; int commandId = event.GetId(); - - while (table.entries[i].m_fn != NULL) - { - wxEventType eventType = (wxEventType) table.entries[i].m_eventType; + // BC++ doesn't like while (table.entries[i].m_fn) + + while (table.entries[i].m_fn != 0L) + { if ((event.GetEventType() == table.entries[i].m_eventType) && (table.entries[i].m_id == -1 || // Match, if event spec says any id will do (id == -1) (table.entries[i].m_lastId == -1 && commandId == table.entries[i].m_id) || (table.entries[i].m_lastId != -1 && (commandId >= table.entries[i].m_id && commandId <= table.entries[i].m_lastId)))) { - event.Skip(FALSE); + event.Skip(FALSE); event.m_callbackUserData = table.entries[i].m_callbackUserData; - + (this->*((wxEventFunction) (table.entries[i].m_fn)))(event); - if ( event.GetSkipped() ) - return FALSE; - else + if ( event.GetSkipped() ) + return FALSE; + else return TRUE; } i ++; @@ -380,8 +399,8 @@ bool wxEvtHandler::SearchEventTable(wxEventTable& table, wxEvent& event) void wxEvtHandler::Connect( int id, int lastId, int eventType, - wxObjectEventFunction func, - wxObject *userData ) + wxObjectEventFunction func, + wxObject *userData ) { wxEventTableEntry *entry = new wxEventTableEntry; entry->m_id = id; @@ -406,8 +425,7 @@ bool wxEvtHandler::SearchDynamicEventTable( wxEvent& event ) while (node) { wxEventTableEntry *entry = (wxEventTableEntry*)node->Data(); - wxEventType eventType = (wxEventType) entry->m_eventType; - + if (entry->m_fn) { if ((event.GetEventType() == entry->m_eventType) && @@ -416,17 +434,17 @@ bool wxEvtHandler::SearchDynamicEventTable( wxEvent& event ) (entry->m_lastId != -1 && (commandId >= entry->m_id && commandId <= entry->m_lastId)))) { - event.Skip(FALSE); + event.Skip(FALSE); event.m_callbackUserData = entry->m_callbackUserData; - + (this->*((wxEventFunction) (entry->m_fn)))(event); - if (event.GetSkipped()) - return FALSE; - else + if (event.GetSkipped()) + return FALSE; + else return TRUE; } - }; + } node = node->Next(); } return FALSE;