[Contents] [Index] [Help] [Retrace] [browse <] [Browse >]


NAME
    ActivateGadget -- Activate a (string or custom) gadget.

SYNOPSIS
    Success = ActivateGadget( gadget, window, request )
    D0                        A0      A1      A2

    BOOL ActivateGadget( struct gadget *, struct window *,
            struct requester * );

FUNCTION
    Activates a string or custom gadget.  If successful, this means
    that the user does not need to click in the gadget before typing.

    The window parameter must point to the window which contains the
    gadget.  If the gadget is actually in a requester, the window must
    contain the requester, and a pointer to the requester must also be
    passed. The requester parameter must only be valid if the gadget
    has the GTYP_REQGADGET flag set, a requirement for all requester
    gadgets.

    The success of this function depends on a rather complex set
    of conditions.  The intent is that the user is never interrupted from
    what interactions he may have underway.

    The current set of conditions includes:
    -   The window must be active.  If you are opening a new window
        and want an active gadget in it, it is not sufficient to
        assume that the WFLG_ACTIVATE flag has taken effect by the time
        openwindow() returns, even if you insert a delay of some
        finite amount of time.  Use the IDCMP_ACTIVEWINDOW intuimessage
        to tell when your window really becomes active.  Many
        programs use an event loop that calls ActivateGadget()
        whenever they receive the IDCMP_ACTIVEWINDOW message, and also
        the IDCMP_MOUSEBUTTONS messages, and so on, to keep the
        gadget active until it is used (or the user selects some
        other "Cancel" gadget).

    -   No other gadgets may be in use.  This includes system gadgets,
        such as those for window sizing, dragging, etc.
    -   If the gadget is in a requester, that requester must
        be active. (Use IDCMP_REQSET and IDCMP_REQCLEAR).
    -   The right mouse button cannot be held down (e.g. menus)

    NOTE: Don't try to activate a gadget which is disabled or
    not attached to a window or requester.

INPUTS
    gadget = pointer to the gadget that you want activated.
    window = pointer to a window structure containing the gadget.
    requester = pointer to a requester (may by null if this isn't
       a requester gadget (i.e. GTYP_REQGADGET is not set)).

RESULT
    If the conditions above are met, and the gadget is in fact a string
    gadget, then this function will return TRUE, else FALSE.

BUGS
    At present, this function will not return FALSE if a custom
    gadget declines to be activated.

SEE ALSO