\docparam{child}{Child window to remove.}
+\membersection{wxWindow::RemoveEventHandler}{wxwindowremoveeventhandler}
+
+\func{bool}{RemoveEventHandler}{\param{wxEvtHandler *}{handler}}
+
+Find the given {\it handler} in the windows event handler chain and remove (but
+not delete) it from it.
+
+\wxheading{Parameters}
+
+\docparam{handler}{The event handler to remove, must be non {\tt NULL} and
+must be present in this windows event handlers chain}
+
+\wxheading{Return value}
+
+Returns {\tt TRUE} if it was found and {\tt FALSE} otherwise (this also results
+in an assert failure so this function should only be called when the
+handler is supposed to be there).
+
+\wxheading{See also}
+
+\helpref{PushEventHandler}{wxwindowpusheventhandler},\rtfsp
+\helpref{PopEventHandler}{wxwindowpopeventhandler}
+
\membersection{wxWindow::Reparent}\label{wxwindowreparent}
\func{virtual bool}{Reparent}{\param{wxWindow* }{newParent}}
void PushEventHandler( wxEvtHandler *handler );
wxEvtHandler *PopEventHandler( bool deleteHandler = FALSE );
+ // find the given handler in the event handler chain and remove (but
+ // not delete) it from the event handler chain, return TRUE if it was
+ // found and FALSE otherwise (this also results in an assert failure so
+ // this function should only be called when the handler is supposed to
+ // be there)
+ bool RemoveEventHandler(wxEvtHandler *handler);
+
// validators
// ----------
return handlerA;
}
+bool wxWindowBase::RemoveEventHandler(wxEvtHandler *handler)
+{
+ wxCHECK_MSG( handler, FALSE, _T("RemoveEventHandler(NULL) called") );
+
+ wxEvtHandler *handlerPrev = NULL,
+ *handlerCur = GetEventHandler();
+ while ( handlerCur )
+ {
+ wxEvtHandler *handlerNext = handlerCur->GetNextHandler();
+
+ if ( handlerCur == handler )
+ {
+ if ( handlerPrev )
+ {
+ handlerPrev->SetNextHandler(handlerNext);
+ }
+ else
+ {
+ SetEventHandler(handlerNext);
+ }
+
+ handler->SetNextHandler(NULL);
+
+ return TRUE;
+ }
+
+ handlerPrev = handlerCur;
+ handlerCur = handlerNext;
+ }
+
+ wxFAIL_MSG( _T("where has the event handler gone?") );
+
+ return FALSE;
+}
+
// ----------------------------------------------------------------------------
// cursors, fonts &c
// ----------------------------------------------------------------------------