X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/954b8ae60391d18b87a604e7919c87c0c6ae208b..3cc305b2b4a0674c56c84d7088cfd70676b850f0:/docs/latex/wx/idleevt.tex diff --git a/docs/latex/wx/idleevt.tex b/docs/latex/wx/idleevt.tex index f38cf33a03..e354e833f9 100644 --- a/docs/latex/wx/idleevt.tex +++ b/docs/latex/wx/idleevt.tex @@ -1,6 +1,21 @@ \section{\class{wxIdleEvent}}\label{wxidleevent} -This class is used for idle events, which are generated when the system is idle. +This class is used for idle events, which are generated when the system becomes +idle. Note that, unless you do something specifically, the idle events are not +sent if the system remains idle once it has become it, e.g. only a single idle +event will be generated until something else resulting in more normal events +happens and only then is the next idle event sent again. If you need to ensure +a continuous stream of idle events, you can either use +\helpref{RequestMore}{wxidleeventrequestmore} method in your handler or call +\helpref{wxWakeUpIdle}{wxwakeupidle} periodically (for example from timer +event), but note that both of these approaches (and especially the first one) +increase the system load and so should be avoided if possible. + +By default, idle events are sent to all windows (and also +\helpref{wxApp}{wxapp}, as usual). If this is causing a significant +overhead in your application, you can call \helpref{wxIdleEvent::SetMode}{wxidleeventsetmode} with +the value wxIDLE\_PROCESS\_SPECIFIED, and set the wxWS\_EX\_PROCESS\_IDLE extra +window style for every window which should receive idle events. \wxheading{Derived from} @@ -11,6 +26,10 @@ This class is used for idle events, which are generated when the system is idle. +\wxheading{Library} + +\helpref{wxBase}{librarieslist} + \wxheading{Event table macros} To process an idle event, use this event handler macro to direct input to a member @@ -21,27 +40,51 @@ function that takes a wxIdleEvent argument. \twocolitem{{\bf EVT\_IDLE(func)}}{Process a wxEVT\_IDLE event.} \end{twocollist}% -\wxheading{Remarks} - -Idle events can be caught by the wxApp class, or by top-level window classes. - \wxheading{See also} -\helpref{wxApp::OnIdle}{wxapponidle}, \helpref{Event handling overview}{eventhandlingoverview} +\helpref{Event handling overview}{eventhandlingoverview}, \helpref{wxUpdateUIEvent}{wxupdateuievent}, +\helpref{wxWindow::OnInternalIdle}{wxwindowoninternalidle} \latexignore{\rtfignore{\wxheading{Members}}} -\membersection{wxIdleEvent::wxIdleEvent} +\membersection{wxIdleEvent::wxIdleEvent}\label{wxidleeventctor} \func{}{wxIdleEvent}{\void} Constructor. +\membersection{wxIdleEvent::CanSend}\label{wxidleeventcansend} + +\func{static bool}{CanSend}{\param{wxWindow*}{ window}} + +Returns {\tt true} if it is appropriate to send idle events to +this window. + +This function looks at the mode used (see \helpref{wxIdleEvent::SetMode}{wxidleeventsetmode}), +and the wxWS\_EX\_PROCESS\_IDLE style in {\it window} to determine whether idle events should be sent to +this window now. By default this will always return {\tt true} because +the update mode is initially wxIDLE\_PROCESS\_ALL. You can change the mode +to only send idle events to windows with the wxWS\_EX\_PROCESS\_IDLE extra window style set. + +\wxheading{See also} + +\helpref{wxIdleEvent::SetMode}{wxidleeventsetmode} + +\membersection{wxIdleEvent::GetMode}\label{wxidleeventgetmode} + +\func{static wxIdleMode}{GetMode}{\void} + +Static function returning a value specifying how wxWidgets +will send idle events: to all windows, or only to those which specify that they +will process the events. + +See \helpref{wxIdleEvent::SetMode}{wxidleeventsetmode}. + \membersection{wxIdleEvent::RequestMore}\label{wxidleeventrequestmore} -\func{void}{RequestMore}{\param{bool}{ needMore = TRUE}} +\func{void}{RequestMore}{\param{bool}{ needMore = true}} -Tells wxWindows that more processing is required. This function can be called by an OnIdle +Tells wxWidgets that more processing is required. This function can be called by an OnIdle handler for a window or window event handler to indicate that wxApp::OnIdle should forward the OnIdle event once more to the application windows. If no window calls this function during OnIdle, then the application will remain in a passive event loop (not calling OnIdle) until a @@ -49,15 +92,38 @@ new event is posted to the application by the windowing system. \wxheading{See also} -\helpref{wxIdleEvent::MoreRequested}{wxidleeventmorerequested}, \helpref{wxApp::OnIdle}{wxapponidle} +\helpref{wxIdleEvent::MoreRequested}{wxidleeventmorerequested} \membersection{wxIdleEvent::MoreRequested}\label{wxidleeventmorerequested} \constfunc{bool}{MoreRequested}{\void} -Returns TRUE if the OnIdle function processing this event requested more processing time. +Returns true if the OnIdle function processing this event requested more processing time. \wxheading{See also} -\helpref{wxIdleEvent::RequestMore}{wxidleeventrequestmore}, \helpref{wxApp::OnIdle}{wxapponidle} +\helpref{wxIdleEvent::RequestMore}{wxidleeventrequestmore} + +\membersection{wxIdleEvent::SetMode}\label{wxidleeventsetmode} + +\func{static void}{SetMode}{\param{wxIdleMode }{mode}} + +Static function for specifying how wxWidgets will send idle events: to +all windows, or only to those which specify that they +will process the events. + +{\it mode} can be one of the following values. +The default is wxIDLE\_PROCESS\_ALL. + +\begin{verbatim} +enum wxIdleMode +{ + // Send idle events to all windows + wxIDLE_PROCESS_ALL, + + // Send idle events to windows that have + // the wxWS_EX_PROCESS_IDLE flag specified + wxIDLE_PROCESS_SPECIFIED +}; +\end{verbatim}