X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f8e5ed929cb84efa6581716ea3f3dcde226fac31..ee0a94cfc2f71e8b770eedda5197a1f4bd62b5cb:/docs/latex/wx/event.tex diff --git a/docs/latex/wx/event.tex b/docs/latex/wx/event.tex index f747df581b..fc016f23f2 100644 --- a/docs/latex/wx/event.tex +++ b/docs/latex/wx/event.tex @@ -4,6 +4,11 @@ An event is a structure holding information about an event passed to a callback or member function. {\bf wxEvent} used to be a multipurpose event object, and is an abstract base class for other event classes (see below). +For more information about events, see the \helpref{Event handling overview}{eventhandlingoverview}. + +\perlnote{In wxPerl custom event classes should be derived from +\texttt{Wx::PlEvent} and \texttt{Wx::PlCommandEvent}.} + \wxheading{Derived from} \helpref{wxObject}{wxobject} @@ -19,120 +24,176 @@ event object, and is an abstract base class for other event classes (see below). \latexignore{\rtfignore{\wxheading{Members}}} -\membersection{wxEvent::wxEvent} - -\func{}{wxEvent}{\param{int }{id = 0}} - -Constructor. Should not need to be used directly by an application. -\membersection{wxEvent::m\_eventHandle} +\membersection{wxEvent::wxEvent}\label{wxeventctor} -\member{char*}{m\_eventHandle} +\func{}{wxEvent}{\param{int }{id = 0}, \param{wxEventType }{eventType = {\tt wxEVT\_NULL}}} -Handle of an underlying windowing system event handle, such as -XEvent. Not guaranteed to be instantiated. +Constructor. Should not need to be used directly by an application. -\membersection{wxEvent::m\_eventObject} -\member{wxObject*}{m\_eventObject} +\membersection{wxEvent::m\_propagationLevel}\label{wxeventmpropagationlevel} -The object (usually a window) that the event was generated from, -or should be sent to. -\membersection{wxEvent::m\_eventType} +\member{int}{m\_propagationLevel} -\member{WXTYPE}{m\_eventType} +Indicates how many levels the event can propagate. This member is protected and +should typically only be set in the constructors of the derived classes. It +may be temporarily changed by \helpref{StopPropagation}{wxeventstoppropagation} +and \helpref{ResumePropagation}{wxeventresumepropagation} and tested with +\helpref{ShouldPropagate}{wxeventshouldpropagate}. -The type of the event, such as wxEVENT\_TYPE\_BUTTON\_COMMAND. +The initial value is set to either {\tt wxEVENT\_PROPAGATE\_NONE} (by +default) meaning that the event shouldn't be propagated at all or to +{\tt wxEVENT\_PROPAGATE\_MAX} (for command events) meaning that it should be +propagated as much as necessary. -\membersection{wxEvent::m\_id} +Any positive number means that the event should be propagated but no more than +the given number of times. E.g. the propagation level may be set to $1$ to +propagate the event to its parent only, but not to its grandparent. -\member{int}{m\_id} -Identifier for the window. +\membersection{wxEvent::Clone}\label{wxeventclone} -\membersection{wxEvent::m\_skipped} +\constfunc{virtual wxEvent*}{Clone}{\void} -\member{bool}{m\_skipped} +Returns a copy of the event. -Set to TRUE by {\bf Skip} if this event should be skipped. +Any event that is posted to the wxWidgets event system for later action (via +\helpref{wxEvtHandler::AddPendingEvent}{wxevthandleraddpendingevent} or +\helpref{wxPostEvent}{wxpostevent}) must implement this method. All wxWidgets +events fully implement this method, but any derived events implemented by the +user should also implement this method just in case they (or some event +derived from them) are ever posted. -\membersection{wxEvent::m\_timeStamp} +All wxWidgets events implement a copy constructor, so the easiest way of +implementing the Clone function is to implement a copy constructor for +a new event (call it MyEvent) and then define the Clone function like this: -\member{long}{m\_timeStamp} +\begin{verbatim} + wxEvent *Clone(void) const { return new MyEvent(*this); } +\end{verbatim} -Timestamp for this event. -\membersection{wxEvent::GetEventObject} +\membersection{wxEvent::GetEventObject}\label{wxeventgeteventobject} \func{wxObject*}{GetEventObject}{\void} -Returns the object associated with the +Returns the object (usually a window) associated with the event, if any. -\membersection{wxEvent::GetEventType} -\func{WXTYPE}{GetEventType}{\void} +\membersection{wxEvent::GetEventType}\label{wxeventgeteventtype} + +\func{wxEventType}{GetEventType}{\void} Returns the identifier of the given event type, -such as wxEVENT\_TYPE\_BUTTON\_COMMAND. +such as \texttt{wxEVT\_COMMAND\_BUTTON\_CLICKED}. -\membersection{wxEvent::GetId} -\func{int}{GetId}{\void} +\membersection{wxEvent::GetId}\label{wxeventgetid} -Returns the identifier associated with this event, such as a button command id. +\constfunc{int}{GetId}{\void} -\membersection{wxEvent::GetObjectType} +Returns the identifier associated with this event, such as a button command id. -\func{WXTYPE}{GetObjectType}{\void} -Returns the type of the object associated with the -event, such as wxTYPE\_BUTTON. +\membersection{wxEvent::GetSkipped}\label{wxeventgetskipped} -\membersection{wxEvent::GetSkipped} +\constfunc{bool}{GetSkipped}{\void} -\func{bool}{GetSkipped}{\void} +Returns true if the event handler should be skipped, false otherwise. -Returns TRUE if the event handler should be skipped, FALSE otherwise. -\membersection{wxEvent::GetTimestamp} +\membersection{wxEvent::GetTimestamp}\label{wxeventgettimestamp} \func{long}{GetTimestamp}{\void} -Gets the timestamp for the event. +Gets the timestamp for the event. The timestamp is the time in milliseconds +since some fixed moment (\emph{not} necessarily the standard Unix Epoch, so +only differences between the timestamps and not their absolute values usually +make sense). + + +\membersection{wxEvent::IsCommandEvent}\label{wxeventiscommandevent} + +\constfunc{bool}{IsCommandEvent}{\void} + +Returns true if the event is or is derived from +\helpref{wxCommandEvent}{wxcommandevent} else it returns false. +Note: Exists only for optimization purposes. + + +\membersection{wxEvent::ResumePropagation}\label{wxeventresumepropagation} + +\func{void}{ResumePropagation}{\param{int }{propagationLevel}} -\membersection{wxEvent::SetEventObject} +Sets the propagation level to the given value (for example returned from an +earlier call to \helpref{StopPropagation}{wxeventstoppropagation}). + + +\membersection{wxEvent::SetEventObject}\label{wxeventseteventobject} \func{void}{SetEventObject}{\param{wxObject* }{object}} Sets the originating object. -\membersection{wxEvent::SetEventType} -\func{void}{SetEventType}{\param{WXTYPE }{typ}} +\membersection{wxEvent::SetEventType}\label{wxeventseteventtype} + +\func{void}{SetEventType}{\param{wxEventType }{type}} Sets the event type. -\membersection{wxEvent::SetId} + +\membersection{wxEvent::SetId}\label{wxeventsetid} \func{void}{SetId}{\param{int}{ id}} Sets the identifier associated with this event, such as a button command id. -\membersection{wxEvent::SetTimestamp} + +\membersection{wxEvent::SetTimestamp}\label{wxeventsettimestamp} \func{void}{SetTimestamp}{\param{long }{timeStamp}} Sets the timestamp for the event. -Sets the originating object. + +\membersection{wxEvent::ShouldPropagate}\label{wxeventshouldpropagate} + +\constfunc{bool}{ShouldPropagate}{\void} + +Test if this event should be propagated or not, i.e. if the propagation level +is currently greater than $0$. + \membersection{wxEvent::Skip}\label{wxeventskip} -\func{void}{Skip}{\param{bool}{ skip = TRUE}} +\func{void}{Skip}{\param{bool}{ skip = true}} + +This method can be called by an event handler and controls whether additional +event handlers bound to this event will be called after the current event +handler returns. The default behavior is equivalent to calling Skip(false) +(which is, hence, usually unnecessary) and will prevent additional event +handlers from being called and control will be returned to the sender of the +event immediately after the current handler has finished. If Skip(true) is +called, the event processing system continues searching for a handler +function for this event as if the current handler didn't exist. + +In general, it is recommended to skip all non-command events to allow the +default handling to take place. The command events are, however, normally not +skipped as usually a single command such as a button click or menu item +selection must only be processed by one handler. + + +\membersection{wxEvent::StopPropagation}\label{wxeventstoppropagation} + +\func{int}{StopPropagation}{\void} + +Stop the event from propagating to its parent window. -Called by an event handler to tell the event system that the -event handler should be skipped, and the next valid handler used -instead. +Returns the old propagation level value which may be later passed to +\helpref{ResumePropagation}{wxeventresumepropagation} to allow propagating the +event again.