Tk_DoOneEvent

Section: Tk Library Procedures (3)
Updated:
Index Return to Main Contents
 

NAME

Tk_DoOneEvent, Tk_MainLoop, Tk_HandleEvent - wait for events and invoke event handlers  

SYNOPSIS

#include <tk.h>

int
Tk_DoOneEvent(flags)

Tk_MainLoop()

Tk_HandleEvent(eventPtr)
 

ARGUMENTS

This parameter is normally zero. It may be an OR-ed combination of any of the following flag bits: TK_X_EVENTS, TK_FILE_EVENTS, TK_TIMER_EVENTS, TK_IDLE_EVENTS, TK_ALL_EVENTS, or TK_DONT_WAIT. Pointer to X event to dispatch to relevant handler(s).

 

DESCRIPTION

These three procedures are responsible for waiting for events and dispatching to event handlers created with the procedures Tk_CreateEventHandler, Tk_CreateFileHandler, Tk_CreateTimerHandler, and Tk_DoWhenIdle. Tk_DoOneEvent is the key procedure. It waits for a single event of any sort to occur, invokes the handler(s) for that event, and then returns. Tk_DoOneEvent first checks for X events and file-related events; if one is found then it calls the handler(s) for the event and returns. If there are no X or file events pending, then Tk_DoOneEvent checks to see if timer callbacks are ready; if so, it makes a single callback and returns. If no timer callbacks are ready, Tk_DoOneEvent checks for Tk_DoWhenIdle callbacks; if any are found, it invokes all of them and returns. Finally, if no events or work have been found, Tk_DoOneEvent sleeps until a timer, file, or X event occurs; then it processes the first event found (in the order given above) and returns. The normal return value is 1 to signify that some event or callback was processed. If no event or callback is processed (under various conditions described below), then 0 is returned.

If the flags argument to Tk_DoOneEvent is non-zero then it restricts the kinds of events that will be processed by Tk_DoOneEvent. Flags may be an OR-ed combination of any of the following bits:

TK_X_EVENTS -
Process X events.
TK_FILE_EVENTS -
Process file events.
TK_TIMER_EVENTS -
Process timer events.
TK_IDLE_EVENTS -
Process Tk_DoWhenIdle callbacks.
TK_ALL_EVENTS -
Process all kinds of events: equivalent to OR-ing together all of the above flags or specifying none of them.
TK_DONT_WAIT -
Don't sleep: process only events that are ready at the time of the call.

If any of the flags TK_X_EVENTS, TK_FILE_EVENTS, TK_TIMER_EVENTS, or TK_IDLE_EVENTS is set, then the only events that will be considered are those for which flags are set. Setting none of these flags is equivalent to the value TK_ALL_EVENTS, which causes all event types to be processed.

The TK_DONT_WAIT flag causes Tk_DoWhenIdle not to put the process to sleep: it will check for events but if none are found then it returns immediately with a return value of 0 to indicate that no work was done. Tk_DoOneEvent will also return 0 without doing anything if flags is TK_IDLE_EVENTS and there are no Tk_DoWhenIdle callbacks pending. Lastly, Tk_DoOneEvent will return 0 without doing anything if there are no events or work found and if there are no files, displays, or timer handlers to wait for.

Tk_MainLoop is a procedure that loops repeatedly calling Tk_DoOneEvent. It returns only when there are no applications left in this process (i.e. no main windows exist anymore). Most X applications will call Tk_MainLoop after initialization; the main execution of the application will consist entirely of callbacks invoked by Tk_DoOneEvent.

Tk_HandleEvent is a lower-level procedure invoked by Tk_DoOneEvent. It makes callbacks to any event handlers (created by calls to Tk_CreateEventHandler) that match eventPtr and then returns. In some cases it may be useful for an application to read events directly from X and dispatch them by calling Tk_HandleEvent, without going through the additional mechanism provided by Tk_DoOneEvent.

These procedures may be invoked recursively. For example, it is possible to invoke Tk_DoOneEvent recursively from a handler called by Tk_DoOneEvent. This sort of operation is useful in some modal situations, such as when a notifier has been popped up and an application wishes to wait for the user to click a button in the notifier before doing anything else.

 

KEYWORDS

callback, event, handler, idle, timer


 

Index

NAME
SYNOPSIS
ARGUMENTS
DESCRIPTION
KEYWORDS

This document was created by man2html, using the manual pages.
Time: 17:24:27 GMT, November 26, 2024