X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dd0705221ed63f30e7d7be460ad743ea32da7c8e..3baaf31317b1380ba9f33f8a23ff04bd20356d63:/src/common/event.cpp diff --git a/src/common/event.cpp b/src/common/event.cpp index 3856f91736..02c63cc4fa 100644 --- a/src/common/event.cpp +++ b/src/common/event.cpp @@ -52,9 +52,9 @@ IMPLEMENT_DYNAMIC_CLASS(wxEvtHandler, wxObject) IMPLEMENT_ABSTRACT_CLASS(wxEvent, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxIdleEvent, wxEvent) #if wxUSE_GUI + IMPLEMENT_DYNAMIC_CLASS(wxIdleEvent, wxEvent) IMPLEMENT_DYNAMIC_CLASS(wxCommandEvent, wxEvent) IMPLEMENT_DYNAMIC_CLASS(wxNotifyEvent, wxCommandEvent) IMPLEMENT_DYNAMIC_CLASS(wxScrollEvent, wxCommandEvent) @@ -1001,12 +1001,14 @@ bool wxEvtHandler::ProcessEvent(wxEvent& event) { wxWindow *win = (wxWindow *)this; - // also, don't propagate events beyond the first top level window: it - // doesn't make sense to process dialogs events in the parent frame - if ( !win->IsTopLevel() ) + // honour the requests to stop propagation at this window: this is + // used by the dialogs, for example, to prevent processing the events + // from the dialog controls in the parent frame which rarely, if ever, + // makes sense + if ( !(win->GetExtraStyle() & wxWS_EX_BLOCK_EVENTS) ) { wxWindow *parent = win->GetParent(); - if (parent && !parent->IsBeingDeleted()) + if ( parent && !parent->IsBeingDeleted() ) return parent->GetEventHandler()->ProcessEvent(event); } }