Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
A handle
represents a primitive area that can request, receive and lose the focus. A visible UI is made of many handles, of which at most one can be active.
val make : unit -> handle
Create a new handle
val request : handle -> unit
Request the focus
val release : handle -> unit
Release the focus (if the handle has it)
status
represents the state in which a handle can be. Externally we care about having or not the focus, which can be queried with the has_focus
function. Internally, status
also keeps track of conflicts (if multiple handles request
ed the focus).
val empty : status
A status that has no focus and no conflicts
Get the status of a focus handle
. The status
is a reactive value: it will evolve over time, as focus is received or lost.
val has_focus : status -> bool
Check if this status
corresponds to an active focus
TODO This implements a more general concept of "reactive auction":