]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/idleevt.tex
Always use wxFULL_REPAINT_ON_RESIZE for generic status bar.
[wxWidgets.git] / docs / latex / wx / idleevt.tex
index 5ba984e4810c14c1b6f6edc6056e00b15ce7b16a..1cd14a701073dff140024ee136601e49d4377ab7 100644 (file)
@@ -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}
 
@@ -21,27 +36,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{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}}
 
-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
@@ -61,3 +100,26 @@ Returns true if the OnIdle function processing this event requested more process
 
 \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}
+