]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/event.tex
add wxSYS_DCLICK_TIME system metric constant; use it for the generic list control...
[wxWidgets.git] / docs / latex / wx / event.tex
index c7f58ab720cd085563f61c522bc1b99105ac4e7a..84c54107ca1f215a7dce8afe05a8d330dd4511c3 100644 (file)
@@ -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}
@@ -12,6 +17,10 @@ event object, and is an abstract base class for other event classes (see below).
 
 <wx/event.h>
 
+\wxheading{Library}
+
+\helpref{wxBase}{librarieslist}
+
 \wxheading{See also}
 
 \helpref{wxCommandEvent}{wxcommandevent},\rtfsp
@@ -19,127 +28,174 @@ 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}}
+\membersection{wxEvent::wxEvent}\label{wxeventctor}
+
+\func{}{wxEvent}{\param{int }{id = 0}, \param{wxEventType }{eventType = {\tt wxEVT\_NULL}}}
 
 Constructor. Should not need to be used directly by an application.
 
-\membersection{wxEvent::m\_eventHandle}
 
-\member{char*}{m\_eventHandle}
+\membersection{wxEvent::m\_propagationLevel}\label{wxeventmpropagationlevel}
 
-Handle of an underlying windowing system event handle, such as
-XEvent. Not guaranteed to be instantiated.
 
-\membersection{wxEvent::m\_eventObject}
+\member{int}{m\_propagationLevel}
 
-\member{wxObject*}{m\_eventObject}
+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 object (usually a window) that the event was generated from,
-or should be sent to.
+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\_eventType}
+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{WXTYPE}{m\_eventType}
 
-The type of the event, such as wxEVENT\_TYPE\_BUTTON\_COMMAND.
+\membersection{wxEvent::Clone}\label{wxeventclone}
 
-\membersection{wxEvent::m\_id}
+\constfunc{virtual wxEvent*}{Clone}{\void}
 
-\member{int}{m\_id}
+Returns a copy of the event.
 
-Identifier for the window.
+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\_skipped}
+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{bool}{m\_skipped}
+\begin{verbatim}
+    wxEvent *Clone(void) const { return new MyEvent(*this); }
+\end{verbatim}
 
-Set to TRUE by {\bf Skip} if this event should be skipped.
 
-\membersection{wxEvent::m\_timeStamp}
+\membersection{wxEvent::GetEventObject}\label{wxeventgeteventobject}
 
-\member{long}{m\_timeStamp}
+\func{wxObject*}{GetEventObject}{\void}
 
-Timestamp for this event.
+Returns the object (usually a window) associated with the
+event, if any.
 
-\membersection{wxEvent::GetEventClass}
 
-\func{WXTYPE}{GetEventClass}{\void}
+\membersection{wxEvent::GetEventType}\label{wxeventgeteventtype}
 
-Returns the identifier of the given event class,
-such as wxTYPE\_MOUSE\_EVENT.
+\func{wxEventType}{GetEventType}{\void}
 
-\membersection{wxEvent::GetEventObject}
+Returns the identifier of the given event type,
+such as \texttt{wxEVT\_COMMAND\_BUTTON\_CLICKED}.
 
-\func{wxObject*}{GetEventObject}{\void}
 
-Returns the object associated with the
-event, if any.
+\membersection{wxEvent::GetId}\label{wxeventgetid}
 
-\membersection{wxEvent::GetEventType}
+\constfunc{int}{GetId}{\void}
 
-\func{WXTYPE}{GetEventType}{\void}
+Returns the identifier associated with this event, such as a button command id.
 
-Returns the identifier of the given event type,
-such as wxEVENT\_TYPE\_BUTTON\_COMMAND.
 
-\membersection{wxEvent::GetId}
+\membersection{wxEvent::GetSkipped}\label{wxeventgetskipped}
 
-\func{int}{GetId}{\void}
+\constfunc{bool}{GetSkipped}{\void}
 
-Returns the identifier associated with this event, such as a button command id.
+Returns true if the event handler should be skipped, false otherwise.
 
-\membersection{wxEvent::GetObjectType}
 
-\func{WXTYPE}{GetObjectType}{\void}
+\membersection{wxEvent::GetTimestamp}\label{wxeventgettimestamp}
 
-Returns the type of the object associated with the
-event, such as wxTYPE\_BUTTON.
+\func{long}{GetTimestamp}{\void}
 
-\membersection{wxEvent::GetSkipped}
+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).
 
-\func{bool}{GetSkipped}{\void}
 
-Returns TRUE if the event handler should be skipped, FALSE otherwise.
+\membersection{wxEvent::IsCommandEvent}\label{wxeventiscommandevent}
 
-\membersection{wxEvent::GetTimestamp}
+\constfunc{bool}{IsCommandEvent}{\void}
 
-\func{long}{GetTimestamp}{\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}
 
-Gets the timestamp for the event.
+\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 used inside an event handler to control whether further
+event handlers bound to this event will be called after the current one
+returns. Without Skip() (or equivalently if Skip(false) is used),
+the event will not be processed any more. If Skip(true) is called, the event
+processing system continues searching for a further handler function for this
+event, even though it has been processed already in the current handler.
+
+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.