X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/debe6624c1e9d4bf3243381153d1e173c849bcd8..d1427b705318677afe28b1291867f6930c8823a7:/src/common/event.cpp diff --git a/src/common/event.cpp b/src/common/event.cpp index 35f3a6593a..09a8f871d0 100644 --- a/src/common/event.cpp +++ b/src/common/event.cpp @@ -55,6 +55,9 @@ IMPLEMENT_DYNAMIC_CLASS(wxInitDialogEvent, wxEvent) IMPLEMENT_DYNAMIC_CLASS(wxSysColourChangedEvent, wxEvent) IMPLEMENT_DYNAMIC_CLASS(wxIdleEvent, wxEvent) IMPLEMENT_DYNAMIC_CLASS(wxUpdateUIEvent, wxEvent) +IMPLEMENT_DYNAMIC_CLASS(wxNavigationKeyEvent, wxCommandEvent) +IMPLEMENT_DYNAMIC_CLASS(wxPaletteChangedEvent, wxEvent) +IMPLEMENT_DYNAMIC_CLASS(wxQueryNewPaletteEvent, wxEvent) const wxEventTable *wxEvtHandler::GetEventTable() const { return &wxEvtHandler::sm_eventTable; } @@ -221,8 +224,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; } @@ -304,14 +307,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 +329,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 +339,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; @@ -355,7 +361,7 @@ bool wxEvtHandler::SearchEventTable(wxEventTable& table, wxEvent& event) while (table.entries[i].m_fn != NULL) { - wxEventType eventType = (wxEventType) table.entries[i].m_eventType; +// wxEventType eventType = (wxEventType) table.entries[i].m_eventType; 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) @@ -363,14 +369,14 @@ bool wxEvtHandler::SearchEventTable(wxEventTable& table, wxEvent& event) (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 +386,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,7 +412,8 @@ bool wxEvtHandler::SearchDynamicEventTable( wxEvent& event ) while (node) { wxEventTableEntry *entry = (wxEventTableEntry*)node->Data(); - wxEventType eventType = (wxEventType) entry->m_eventType; + +// wxEventType eventType = (wxEventType) entry->m_eventType; if (entry->m_fn) { @@ -416,14 +423,14 @@ 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; } }; @@ -432,87 +439,6 @@ bool wxEvtHandler::SearchDynamicEventTable( wxEvent& event ) return FALSE; }; -/* -#if WXWIN_COMPATIBILITY -void wxEvtHandler::OldOnMenuCommand(int cmd) -{ - if (GetNextHandler()) GetNextHandler()->OldOnMenuCommand(cmd); -} - -void wxEvtHandler::OldOnMenuSelect(int cmd) -{ - if (GetNextHandler()) GetNextHandler()->OldOnMenuSelect(cmd); -} - -void wxEvtHandler::OldOnInitMenuPopup(int pos) -{ - if (GetNextHandler()) GetNextHandler()->OldOnInitMenuPopup(pos); -} - -void wxEvtHandler::OldOnScroll(wxCommandEvent& event) -{ - if (GetNextHandler()) GetNextHandler()->OldOnScroll(event); -} - -void wxEvtHandler::OldOnPaint(void) -{ - if (GetNextHandler()) GetNextHandler()->OldOnPaint(); -} -void wxEvtHandler::OldOnSize(int width, int height) -{ - if (GetNextHandler()) GetNextHandler()->OldOnSize(width, height); -} - -void wxEvtHandler::OldOnMove(int x, int y) -{ - if (GetNextHandler()) GetNextHandler()->OldOnMove(x, y); -} - -void wxEvtHandler::OldOnMouseEvent(wxMouseEvent& event) -{ - if (GetNextHandler()) GetNextHandler()->OldOnMouseEvent(event); -} - -void wxEvtHandler::OldOnChar(wxKeyEvent& event) -{ - if (GetNextHandler()) GetNextHandler()->OldOnChar(event); -} - -// Under Windows, we can intercept character input per dialog or frame -bool wxEvtHandler::OldOnCharHook(wxKeyEvent& event) -{ - if (GetNextHandler()) return GetNextHandler()->OldOnCharHook(event); - else return FALSE; -} - -void wxEvtHandler::OldOnActivate(bool active) -{ - if (GetNextHandler()) GetNextHandler()->OldOnActivate(active); -} - -void wxEvtHandler::OldOnSetFocus(void) -{ - if (GetNextHandler()) GetNextHandler()->OldOnSetFocus(); -} - -void wxEvtHandler::OldOnKillFocus(void) -{ - if (GetNextHandler()) GetNextHandler()->OldOnKillFocus(); -} - -bool wxEvtHandler::OldOnSysColourChange(void) -{ - if (GetNextHandler()) return GetNextHandler()->OldOnSysColourChange(); - return FALSE; -} - -void wxEvtHandler::OldOnDropFiles(int n, char *files[], int x, int y) -{ - if (GetNextHandler()) GetNextHandler()->OldOnDropFiles(n, files, x, y); -} -#endif -*/ - bool wxEvtHandler::OnClose(void) { if (GetNextHandler()) return GetNextHandler()->OnClose();