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

	OnGadget -- Enable the specified gadget.

	OnGadget( Gadget, Window, Requester )
		  A0      A1      A2

	VOID OnGadget( struct Gadget *, struct Window *,
		struct Requester * );

	This command enables the specified gadget.  When a gadget is
	enabled, these things happen:
        - its imagery is displayed normally (not ghosted)
        - the GFLG_DISABLED flag is cleared
        - the gadget can thereafter be selected by the user

	The window parameter must point to the window which contains the
	gadget, or which contains the requester that contains the gadget
	The requester parameter must only be valid if the gadget has the
	GTYP_REQGADGET flag set, a requirement for all requester gadgets.

       NOTE:  it's never safe to tinker with the gadget list yourself.  Don't
       supply some gadget that Intuition hasn't already processed in
       the usual way.

    	NOTE: for compatibility reasons, this function will refresh all
	gadgets in a requester, and all gadgets from gadget to the
	end of the gadget list if gadget is in a window.

	If you want to improve on this behavior, you may perform the
	equivalent operation yourself: remove a gadget or gadgets,
	change the state of their GFLG_DISABLED flag, replace the
	gadgets using AddGList(), and selectively call RefreshGList().

	Gadget = pointer to the gadget that you want disabled
	Window = pointer to a window structure containing the gadget or
	    containing the requester which contains the gadget
	Requester = pointer to a requester (may by NULL if this isn't
           a requester gadget (i.e. GTYP_REQGADGET is not set)).


	Traditional gadgets are rendered very simply.  This can result
	in incomplete clearing away of the ghosting pattern when
	OnGadget() is used.  For example, a button whose imagery consists
	of an IntuiText inside a rectangular Border doesn't have the
	button interior cleared by OnGadget().  This is because OnGadget()
	clears the GFLG_DISABLED flag then redraws the gadget.  Redrawing
	this gadget consists of redrawing the border and text.  Nothing
	redraws the field.

	The solution to this type of problem is to either use a gadget
	whose imagery is a struct Image that covers the whole select area,
	or to manually remove the gadget, erase the gadget's select area
	(say using EraseRect()), then clear the GFLG_DISABLED flag,
	add the gadget back to the window, and refresh it.


[Back to Amiga Developer Docs]