Events (screen.h)

Events are associated with a given context.

The windowing system manages an event queue per context. An event can be transferred from the event queue to the application by using screen_get_event(). Once transferred to the application, it can be used with screen_get_event_property() in an event handling routine to handle the event accordingly.

Several variations of screen_get_event_property() and screen_set_event_property() functions are available to query and set event properties respectively. It is important to note that different types of events will permit a different selection of properties that can be queried or set. The exception to this is the property SCREEN_PROPERTY_TYPE because this property determines the type of the event. It's common practice to have your event handling routine first retrieve the event type by calling screen_get_event_property_iv() with SCREEN_PROPERTY_TYPE as the name of the property to query. Once you know which type of event you are handling, you can proceed to call the appropriate query and set API functions for the other event properties. Refer to the example below for the logic of a simple event handling routine.
...
screen_event_t screen_ev;
screen_create_event(&screen_ev);

while (1){
    do {
        /* Call screen_get_event with a timeout of -1, or ~0, so that you block
           until an event is put into the event queue. */
        screen_get_event(screen_ctx, screen_ev, vis ? 0 : ~0);
			
        /* Get the type of the event */
        screen_get_event_property_iv(screen_ev, SCREEN_PROPERTY_TYPE, &type);

        /* Handle events of interest to your application */
        if (type == SCREEN_EVENT_POST) {
            /* Handle SCREEN_EVENT_POST event accordingly;
               query or set properties valid for POST events */
        }
        else if (type == SCREEN_EVENT_CLOSE) {
            /* Handle SCREEN_EVENT_CLOSE event accordingly;
               query or set properties valid for CLOSE events */
        }
        else if
            ... 
    } while (type != SCREEN_EVENT_NONE);
}
...	

Last modified: 2014-05-14



Got questions about leaving a comment? Get answers from our Disqus FAQ.

comments powered by Disqus