added/documented wxApp::FilterEvent

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15467 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2002-05-09 17:21:02 +00:00
parent c11d62a6e2
commit 9154d8cfff
4 changed files with 49 additions and 3 deletions

View File

@ -85,6 +85,17 @@ This can be used for programming event loops, e.g.
\helpref{wxApp::Pending}{wxapppending}
\membersection{wxApp::FilterEvent}\label{wxappfilterevent}
\func{int}{FilterEvent}{\param{wxEvent\& }{event}}
This function is called before processing any event and allows the application
to preempt the processing of some events. If this method returns $-1$ the event
is processed normally, otherwise either {\tt TRUE} or {\tt FALSE} should be
returned and the event processing stops immediately considering that the event
had been already processed (for the former return value) or that it is not
going to be processed at all (for the latter one).
\membersection{wxApp::GetAppName}\label{wxappgetappname}
\constfunc{wxString}{GetAppName}{\void}

View File

@ -315,6 +315,15 @@ public:
virtual void SetActive(bool isActive, wxWindow *lastFocus);
#endif // wxUSE_GUI
// this method allows to filter all the events processed by the program, so
// you should try to return quickly from it to avoid slowing down the
// program to the crawl
//
// return value should be -1 to continue with the normal event processing,
// or TRUE or FALSE to stop further processing and pretend that the event
// had been already processed or won't be processed at all, respectively
virtual int FilterEvent(wxEvent& event);
// debugging support
// -----------------

View File

@ -182,6 +182,12 @@ void wxAppBase::SetActive(bool active, wxWindow * WXUNUSED(lastFocus))
#endif // wxUSE_GUI
int wxAppBase::FilterEvent(wxEvent& WXUNUSED(event))
{
// process the events normally by default
return -1;
}
// ----------------------------------------------------------------------------
// cmd line parsing
// ----------------------------------------------------------------------------

View File

@ -744,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() )
{