home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD 2.1 / Amiga Developer CD v2.1.iso / Reference / Includes_and_Autodocs_3.5 / include / intuition / gadgetclass.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-10-19  |  17.6 KB  |  555 lines

  1. #ifndef INTUITION_GADGETCLASS_H
  2. #define INTUITION_GADGETCLASS_H
  3. /*
  4. **    $VER: gadgetclass.h 44.1 (19.10.1999)
  5. **    Includes Release 44.1
  6. **
  7. **    Custom and 'boopsi' gadget class interface
  8. **
  9. **    (C) Copyright 1987-1999 Amiga, Inc.
  10. **        All Rights Reserved
  11. */
  12.  
  13. /*****************************************************************************/
  14.  
  15. #ifndef INTUITION_INTUITION_H
  16. #include <intuition/intuition.h>
  17. #endif
  18.  
  19. #ifndef UTILITY_TAGITEM_H
  20. #include <utility/tagitem.h>
  21. #endif
  22.  
  23. /*****************************************************************************/
  24.  
  25. /* NOTE:  <intuition/iobsolete.h> is included at the END of this file! */
  26.  
  27. /*****************************************************************************/
  28.  
  29. /* Gadget class attributes */
  30. #define    GA_Dummy         (TAG_USER+0x30000)
  31.  
  32. #define    GA_Left            (GA_Dummy+1)
  33.     /* (LONG) Left edge of the gadget relative to the left edge of
  34.      * the window */
  35.  
  36. #define    GA_RelRight        (GA_Dummy+2)
  37.     /* (LONG) Left edge of the gadget relative to the right edge of
  38.      * the window */
  39.  
  40. #define    GA_Top            (GA_Dummy+3)
  41.     /* (LONG) Top edge of the gadget relative to the top edge of
  42.      * the window */
  43.  
  44. #define    GA_RelBottom        (GA_Dummy+4)
  45.     /* (LONG) Top edge of the gadget relative to the bottom edge
  46.      * of the window */
  47.  
  48. #define    GA_Width        (GA_Dummy+5)
  49.     /* (LONG) Width of the gadget */
  50.  
  51. #define    GA_RelWidth        (GA_Dummy+6)
  52.     /* (LONG) Width of the gadget relative to the width of the
  53.      * window */
  54.  
  55. #define    GA_Height        (GA_Dummy+7)
  56.     /* (LONG) Height of the gadget */
  57.  
  58. #define    GA_RelHeight        (GA_Dummy+8)
  59.     /* (LONG) Height of the gadget relative to the height of
  60.      * the window */
  61.  
  62. #define    GA_Text            (GA_Dummy+9)
  63.     /* (STRPTR) Gadget imagry is NULL terminated string */
  64.  
  65. #define    GA_Image        (GA_Dummy+10)
  66.     /* (struct Image *) Gadget imagry is an image */
  67.  
  68. #define    GA_Border        (GA_Dummy+11)
  69.     /* (struct Border *) Gadget imagry is a border */
  70.  
  71. #define    GA_SelectRender        (GA_Dummy+12)
  72.     /* (struct Image *) Selected gadget imagry */
  73.  
  74. #define    GA_Highlight        (GA_Dummy+13)
  75.     /* (UWORD) One of GFLG_GADGHNONE, GFLG_GADGHBOX, GFLG_GADGHCOMP,
  76.      * or GFLG_GADGHIMAGE */
  77.  
  78. #define    GA_Disabled        (GA_Dummy+14)
  79.     /* (BOOL) Indicate whether gadget is disabled or not.
  80.      * Defaults to FALSE. */
  81.  
  82. #define    GA_GZZGadget        (GA_Dummy+15)
  83.     /* (BOOL) Indicate whether the gadget is for
  84.      * WFLG_GIMMEZEROZERO window borders or not.  Defaults
  85.      * to FALSE. */
  86.  
  87. #define    GA_ID            (GA_Dummy+16)
  88.     /* (UWORD) Gadget ID assigned by the application */
  89.  
  90. #define    GA_UserData        (GA_Dummy+17)
  91.     /* (APTR) Application specific data */
  92.  
  93. #define    GA_SpecialInfo        (GA_Dummy+18)
  94.     /* (APTR) Gadget specific data */
  95.  
  96. #define    GA_Selected        (GA_Dummy+19)
  97.     /* (BOOL) Indicate whether the gadget is selected or not.
  98.      * Defaults to FALSE */
  99.  
  100. #define    GA_EndGadget        (GA_Dummy+20)
  101.     /* (BOOL) When set tells the system that when this gadget
  102.      * is selected causes the requester that it is in to be
  103.      * ended.  Defaults to FALSE. */
  104.  
  105. #define    GA_Immediate        (GA_Dummy+21)
  106.     /* (BOOL) When set indicates that the gadget is to
  107.      * notify the application when it becomes active.  Defaults
  108.      * to FALSE. */
  109.  
  110. #define    GA_RelVerify        (GA_Dummy+22)
  111.     /* (BOOL) When set indicates that the application wants to
  112.      * verify that the pointer was still over the gadget when
  113.      * the select button is released.  Defaults to FALSE. */
  114.  
  115. #define    GA_FollowMouse        (GA_Dummy+23)
  116.     /* (BOOL) When set indicates that the application wants to
  117.      * be notified of mouse movements while the gadget is active.
  118.      * It is recommmended that GA_Immediate and GA_RelVerify are
  119.      * also used so that the active gadget can be tracked by the
  120.      * application.  Defaults to FALSE. */
  121.  
  122. #define    GA_RightBorder        (GA_Dummy+24)
  123.     /* (BOOL) Indicate whether the gadget is in the right border
  124.      * or not.  Defaults to FALSE. */
  125.  
  126. #define    GA_LeftBorder        (GA_Dummy+25)
  127.     /* (BOOL) Indicate whether the gadget is in the left border
  128.      * or not.  Defaults to FALSE. */
  129.  
  130. #define    GA_TopBorder        (GA_Dummy+26)
  131.     /* (BOOL) Indicate whether the gadget is in the top border
  132.      * or not.  Defaults to FALSE. */
  133.  
  134. #define    GA_BottomBorder        (GA_Dummy+27)
  135.     /* (BOOL) Indicate whether the gadget is in the bottom border
  136.      * or not.  Defaults to FALSE. */
  137.  
  138. #define    GA_ToggleSelect        (GA_Dummy+28)
  139.     /* (BOOL) Indicate whether the gadget is toggle-selected
  140.      * or not.  Defaults to FALSE. */
  141.  
  142. #define    GA_SysGadget        (GA_Dummy+29)
  143.     /* (BOOL) Reserved for system use to indicate that the
  144.      * gadget belongs to the system.  Defaults to FALSE. */
  145.  
  146. #define    GA_SysGType        (GA_Dummy+30)
  147.     /* (UWORD) Reserved for system use to indicate the
  148.      * gadget type. */
  149.  
  150. #define    GA_Previous        (GA_Dummy+31)
  151.     /* (struct Gadget *) Previous gadget in the linked list.
  152.      * NOTE: This attribute CANNOT be used to link new gadgets
  153.      * into the gadget list of an open window or requester.
  154.      * You must use AddGList(). */
  155.  
  156. #define    GA_Next            (GA_Dummy+32)
  157.     /* (struct Gadget *) Next gadget in the linked list. */
  158.  
  159. #define    GA_DrawInfo        (GA_Dummy+33)
  160.     /* (struct DrawInfo *) Some gadgets need a DrawInfo at creation time */
  161.  
  162. /* You should use at most ONE of GA_Text, GA_IntuiText, and GA_LabelImage */
  163. #define GA_IntuiText        (GA_Dummy+34)
  164.     /* (struct IntuiText *) Label is an IntuiText. */
  165.  
  166. #define GA_LabelImage        (GA_Dummy+35)
  167.     /* (Object *) Label is an image object. */
  168.  
  169. #define GA_TabCycle        (GA_Dummy+36)
  170.     /* (BOOL) Indicate whether gadget is part of TAB/SHIFT-TAB cycle
  171.      * activation.  Defaults to FALSE.  New for V37. */
  172.  
  173. #define GA_GadgetHelp        (GA_Dummy+37)
  174.     /* (BOOL) Indicate whether gadget is to send IDCMP_GADGETHELP.
  175.      * Defaults to FALSE.  New for V39. */
  176.  
  177. #define GA_Bounds        (GA_Dummy+38)
  178.     /* (struct IBox *) Copied into the extended gadget's bounds.
  179.      * New for V39. */
  180.  
  181. #define GA_RelSpecial        (GA_Dummy+39)
  182.     /* (BOOL) Indicate whether gadget has special relativity.  Defaults to
  183.      * FALSE.  New for V39. */
  184.  
  185. #define    GA_TextAttr        (GA_Dummy+40)
  186.     /* (struct TextAttr *) Indicate the font to use for the gadget.
  187.      * New for V42. */
  188.  
  189. #define    GA_ReadOnly        (GA_Dummy+41)
  190.     /* (BOOL) Indicate that the gadget is read-only (non-selectable).
  191.      * Defaults to FALSE. New for V42. */
  192.  
  193. #define    GA_Underscore        (GA_Dummy+42)
  194.     /* (UBYTE) Underscore/escape character for keyboard shortcuts.
  195.      * Defaults to '_' . New for V44. */
  196.  
  197. #define    GA_ActivateKey        (GA_Dummy+43)
  198.     /* (STRPTR) Set/Get the gadgets shortcut/activation key(s)
  199.      * Defaults to NULL. New for V44. */
  200.  
  201. #define    GA_BackFill        (GA_Dummy+44)
  202.     /* (struct Hook *) Backfill pattern hook.
  203.      * Defaults to NULL. New for V44. */
  204.  
  205. #define    GA_GadgetHelpText        (GA_Dummy+45)
  206.     /* (STRPTR) **RESERVERD/PRIVATE DO NOT USE**
  207.      * Defaults to NULL. New for V44. */
  208.  
  209. #define    GA_UserInput        (GA_Dummy+46)
  210.     /* (BOOL) Notification tag indicates this notification is from the activite
  211.      * gadget receiving user input - an attempt to make IDCMPUPDATE more efficient.
  212.      * Defaults to FALSE. New for V44. */
  213.  
  214. /*****************************************************************************/
  215.  
  216. /* PROPGCLASS attributes */
  217. #define PGA_Dummy    (TAG_USER+0x31000)
  218. #define PGA_Freedom    (PGA_Dummy+0x0001)
  219.     /* only one of FREEVERT or FREEHORIZ */
  220. #define PGA_Borderless    (PGA_Dummy+0x0002)
  221. #define PGA_HorizPot    (PGA_Dummy+0x0003)
  222. #define PGA_HorizBody    (PGA_Dummy+0x0004)
  223. #define PGA_VertPot    (PGA_Dummy+0x0005)
  224. #define PGA_VertBody    (PGA_Dummy+0x0006)
  225. #define PGA_Total    (PGA_Dummy+0x0007)
  226. #define PGA_Visible    (PGA_Dummy+0x0008)
  227. #define PGA_Top        (PGA_Dummy+0x0009)
  228. /* New for V37: */
  229. #define PGA_NewLook    (PGA_Dummy+0x000A)
  230.  
  231. /*****************************************************************************/
  232.  
  233. /* STRGCLASS attributes */
  234. #define STRINGA_Dummy          (TAG_USER     +0x32000)
  235. #define STRINGA_MaxChars    (STRINGA_Dummy+0x0001)
  236. /* Note:  There is a minor problem with Intuition when using boopsi integer
  237.  * gadgets (which are requested by using STRINGA_LongInt).  Such gadgets
  238.  * must not have a STRINGA_MaxChars to be bigger than 15.  Setting
  239.  * STRINGA_MaxChars for a boopsi integer gadget will cause a mismatched
  240.  * FreeMem() to occur.
  241.  */
  242.  
  243. #define STRINGA_Buffer        (STRINGA_Dummy+0x0002)
  244. #define STRINGA_UndoBuffer    (STRINGA_Dummy+0x0003)
  245. #define STRINGA_WorkBuffer    (STRINGA_Dummy+0x0004)
  246. #define STRINGA_BufferPos    (STRINGA_Dummy+0x0005)
  247. #define STRINGA_DispPos        (STRINGA_Dummy+0x0006)
  248. #define STRINGA_AltKeyMap    (STRINGA_Dummy+0x0007)
  249. #define STRINGA_Font        (STRINGA_Dummy+0x0008)
  250. #define STRINGA_Pens        (STRINGA_Dummy+0x0009)
  251. #define STRINGA_ActivePens    (STRINGA_Dummy+0x000A)
  252. #define STRINGA_EditHook    (STRINGA_Dummy+0x000B)
  253. #define STRINGA_EditModes    (STRINGA_Dummy+0x000C)
  254.  
  255. /* booleans */
  256. #define STRINGA_ReplaceMode    (STRINGA_Dummy+0x000D)
  257. #define STRINGA_FixedFieldMode    (STRINGA_Dummy+0x000E)
  258. #define STRINGA_NoFilterMode    (STRINGA_Dummy+0x000F)
  259.  
  260. #define STRINGA_Justification    (STRINGA_Dummy+0x0010)
  261.     /* GACT_STRINGCENTER, GACT_STRINGLEFT, GACT_STRINGRIGHT */
  262. #define STRINGA_LongVal        (STRINGA_Dummy+0x0011)
  263. #define STRINGA_TextVal        (STRINGA_Dummy+0x0012)
  264.  
  265. #define STRINGA_ExitHelp    (STRINGA_Dummy+0x0013)
  266.     /* STRINGA_ExitHelp is new for V37, and ignored by V36.
  267.      * Set this if you want the gadget to exit when Help is
  268.      * pressed.  Look for a code of 0x5F, the rawkey code for Help */
  269.  
  270. #define SG_DEFAULTMAXCHARS    (128)
  271.  
  272. /*****************************************************************************/
  273.  
  274. /* Gadget layout related attributes */
  275. #define    LAYOUTA_Dummy         (TAG_USER+0x38000)
  276. #define LAYOUTA_LayoutObj    (LAYOUTA_Dummy+0x0001)
  277. #define LAYOUTA_Spacing        (LAYOUTA_Dummy+0x0002)
  278. #define LAYOUTA_Orientation    (LAYOUTA_Dummy+0x0003)
  279.  
  280. #define    LAYOUTA_ChildMaxWidth    (LAYOUTA_Dummy+0x0004)
  281.     /* (BOOL) Child objects are of equal width.  Should default to TRUE for
  282.      * gadgets with a horizontal orientation.  New for V42. */
  283. #define    LAYOUTA_ChildMaxHeight    (LAYOUTA_Dummy+0x0005)
  284.     /* (BOOL) Child objects are of equal height.  Should default to TRUE for
  285.      * gadgets with a vertical orientation.  New for V42. */
  286.  
  287. /* orientation values */
  288. #define LORIENT_NONE    0
  289. #define LORIENT_HORIZ    1
  290. #define LORIENT_VERT    2
  291.  
  292. /*****************************************************************************/
  293.  
  294. /* Gadget Method ID's */
  295. #define GM_Dummy    (-1)
  296.     /* not used for anything */
  297.  
  298. #define GM_HITTEST    (0)
  299.     /* return GMR_GADGETHIT if you are clicked on (whether or not you
  300.      * are disabled). */
  301.  
  302. #define GM_RENDER    (1)
  303.     /* draw yourself, in the appropriate state */
  304.  
  305. #define GM_GOACTIVE    (2)
  306.     /* you are now going to be fed input */
  307.  
  308. #define GM_HANDLEINPUT    (3)
  309.     /* handle that input */
  310.  
  311. #define GM_GOINACTIVE    (4)
  312.     /* whether or not by choice, you are done */
  313.  
  314. #define GM_HELPTEST    (5)
  315.     /* Will you send gadget help if the mouse is at the specified coordinates?
  316.      * See below for possible GMR_ values. */
  317.  
  318. #define GM_LAYOUT    (6)
  319.     /* re-evaluate your size based on the GadgetInfo domain.
  320.      * Do NOT re-render yourself yet, you will be called when it is
  321.      * time... */
  322.  
  323. #define GM_DOMAIN    (7)
  324.     /* Used to obtain the sizing requirements of an object.  Does not
  325.      * require an object. */
  326.  
  327. #define GM_KEYTEST    (8)
  328.     /* return GMR_GADGETHIT if you activation key matches (whether or not you
  329.      * are disabled). */
  330.  
  331. #define GM_KEYGOACTIVE    (9)
  332.  
  333. #define GM_KEYGOINACTIVE    (10)
  334.  
  335. /*****************************************************************************/
  336.  
  337. /* Parameter "Messages" passed to gadget class methods    */
  338.  
  339. /* GM_HITTEST and GM_HELPTEST send this message.
  340.  * For GM_HITTEST, gpht_Mouse are coordinates relative to the gadget
  341.  * select box.  For GM_HELPTEST, the coordinates are relative to
  342.  * the gadget bounding box (which defaults to the select box).
  343.  */
  344. struct gpHitTest
  345. {
  346.     ULONG        MethodID;
  347.     struct GadgetInfo    *gpht_GInfo;
  348.     struct
  349.     {
  350.     WORD    X;
  351.     WORD    Y;
  352.     }            gpht_Mouse;
  353. };
  354.  
  355. /* For GM_HITTEST, return GMR_GADGETHIT if you were indeed hit,
  356.  * otherwise return zero.
  357.  *
  358.  * For GM_HELPTEST, return GMR_NOHELPHIT (zero) if you were not hit.
  359.  * Typically, return GMR_HELPHIT if you were hit.
  360.  * It is possible to pass a UWORD to the application via the Code field
  361.  * of the IDCMP_GADGETHELP message.  Return GMR_HELPCODE or'd with
  362.  * the UWORD-sized result you wish to return.
  363.  *
  364.  * GMR_HELPHIT yields a Code value of ((UWORD) ~0), which should
  365.  * mean "nothing particular" to the application.
  366.  */
  367.  
  368. #define GMR_GADGETHIT    (0x00000004)    /* GM_HITTEST hit */
  369.  
  370. #define GMR_NOHELPHIT    (0x00000000)    /* GM_HELPTEST didn't hit */
  371. #define GMR_HELPHIT    (0xFFFFFFFF)    /* GM_HELPTEST hit, return code = ~0 */
  372. #define GMR_HELPCODE    (0x00010000)    /* GM_HELPTEST hit, return low word as code */
  373.  
  374. /*****************************************************************************/
  375.  
  376. /* GM_RENDER    */
  377. struct gpRender
  378. {
  379.     ULONG        MethodID;
  380.     struct GadgetInfo    *gpr_GInfo;    /* gadget context        */
  381.     struct RastPort    *gpr_RPort;    /* all ready for use        */
  382.     LONG        gpr_Redraw;    /* might be a "highlight pass"    */
  383. };
  384.  
  385. /* values of gpr_Redraw    */
  386. #define GREDRAW_UPDATE    (2)    /* incremental update, e.g. prop slider    */
  387. #define GREDRAW_REDRAW    (1)    /* redraw gadget    */
  388. #define GREDRAW_TOGGLE    (0)    /* toggle highlight, if applicable    */
  389.  
  390. /*****************************************************************************/
  391.  
  392. /* GM_GOACTIVE, GM_HANDLEINPUT    */
  393. struct gpInput
  394. {
  395.     ULONG        MethodID;
  396.     struct GadgetInfo    *gpi_GInfo;
  397.     struct InputEvent    *gpi_IEvent;
  398.     LONG        *gpi_Termination;
  399.     struct
  400.     {
  401.     WORD    X;
  402.     WORD    Y;
  403.     }            gpi_Mouse;
  404.  
  405.     /* (V39) Pointer to TabletData structure, if this event originated
  406.      * from a tablet which sends IESUBCLASS_NEWTABLET events, or NULL if
  407.      * not.
  408.      *
  409.      * DO NOT ATTEMPT TO READ THIS FIELD UNDER INTUITION PRIOR TO V39!
  410.      * IT WILL BE INVALID!
  411.      */
  412.     struct TabletData    *gpi_TabletData;
  413. };
  414.  
  415. /* GM_HANDLEINPUT and GM_GOACTIVE  return code flags    */
  416. /* return GMR_MEACTIVE (0) alone if you want more input.
  417.  * Otherwise, return ONE of GMR_NOREUSE and GMR_REUSE, and optionally
  418.  * GMR_VERIFY.
  419.  */
  420. #define GMR_MEACTIVE    (0)
  421. #define GMR_NOREUSE    (1 << 1)
  422. #define GMR_REUSE    (1 << 2)
  423. #define GMR_VERIFY    (1 << 3)    /* you MUST set gpi_Termination */
  424.  
  425. /* New for V37:
  426.  * You can end activation with one of GMR_NEXTACTIVE and GMR_PREVACTIVE,
  427.  * which instructs Intuition to activate the next or previous gadget
  428.  * that has GFLG_TABCYCLE set.
  429.  */
  430. #define GMR_NEXTACTIVE    (1 << 4)
  431. #define GMR_PREVACTIVE    (1 << 5)
  432.  
  433. /*****************************************************************************/
  434.  
  435. /* GM_GOINACTIVE */
  436. struct gpGoInactive
  437. {
  438.     ULONG        MethodID;
  439.     struct GadgetInfo    *gpgi_GInfo;
  440.  
  441.     /* V37 field only!  DO NOT attempt to read under V36! */
  442.     ULONG        gpgi_Abort;    /* gpgi_Abort=1 if gadget was aborted
  443.                      * by Intuition and 0 if gadget went
  444.                      * inactive at its own request
  445.                      */
  446. };
  447.  
  448. /*****************************************************************************/
  449.  
  450. /* New for V39: Intuition sends GM_LAYOUT to any GREL_ gadget when
  451.  * the gadget is added to the window (or when the window opens, if
  452.  * the gadget was part of the NewWindow.FirstGadget or the WA_Gadgets
  453.  * list), or when the window is resized.  Your gadget can set the
  454.  * GA_RelSpecial property to get GM_LAYOUT events without Intuition
  455.  * changing the interpretation of your gadget select box.  This
  456.  * allows for completely arbitrary resizing/repositioning based on
  457.  * window size.
  458.  */
  459. /* GM_LAYOUT */
  460. struct gpLayout
  461. {
  462.     ULONG        MethodID;
  463.     struct GadgetInfo    *gpl_GInfo;
  464.     ULONG        gpl_Initial;    /* non-zero if this method was invoked
  465.                      * during AddGList() or OpenWindow()
  466.                      * time.  zero if this method was invoked
  467.                      * during window resizing. */
  468. };
  469.  
  470. /*****************************************************************************/
  471.  
  472. /* The GM_DOMAIN method is used to obtain the sizing requirements of an
  473.  * object for a class before ever creating an object. */
  474.  
  475. /* GM_DOMAIN */
  476. struct gpDomain
  477. {
  478.     ULONG         MethodID;
  479.     struct GadgetInfo    *gpd_GInfo;
  480.     struct RastPort    *gpd_RPort;    /* RastPort to layout for */
  481.     LONG         gpd_Which;
  482.     struct IBox         gpd_Domain;    /* Resulting domain */
  483.     struct TagItem    *gpd_Attrs;    /* Additional attributes */
  484. };
  485.  
  486. #define    GDOMAIN_MINIMUM        (0)
  487.     /* Minimum size */
  488.  
  489. #define    GDOMAIN_NOMINAL        (1)
  490.     /* Nominal size */
  491.  
  492. #define    GDOMAIN_MAXIMUM        (2)
  493.     /* Maximum size */
  494.  
  495.  
  496. /*****************************************************************************/
  497.  
  498. /* The GM_KEYTEST method is used to determin if a key press matches an
  499.  * object's activation key(s). */
  500.  
  501. /* GM_KEYTEST send this message.
  502.  */
  503. struct gpKeyTest
  504. {
  505.     ULONG         MethodID;
  506.     struct GadgetInfo    *gpkt_GInfo;
  507.     struct IntuiMessage *gpkt_IMsg;    /* The IntuiMessage that triggered this */
  508.     ULONG         gpkt_VanillaKey;
  509. };
  510.  
  511. /*****************************************************************************/
  512.  
  513. /* The GM_KEYGOACTIVE method is called to "simulate" a gadget going down.
  514.  * A gadget should render itself in a selected state when receiving
  515.  * this message. If the class supports this method, it must return
  516.  * GMR_KEYACTIVE.
  517.  *
  518.  * If a gadget returns zero for this method, it will subsequently be
  519.  * activated via ActivateGadget() with a NULL IEvent.
  520.  */
  521.  
  522. struct gpKeyInput
  523. {
  524.     ULONG MethodID;            /* GM_KEYGOACTIVE */
  525.     struct GadgetInfo    *gpk_GInfo;
  526.     struct InputEvent    *gpk_IEvent;
  527.     LONG        *gpk_Termination;
  528. };
  529.  
  530. #define GMR_KEYACTIVE    (1 << 4)
  531. #define GMR_KEYVERIFY    (1 << 5)    /* you MUST set gpk_Termination */
  532.  
  533. /* The GM_KEYGOINACTIVE method is called to simulate the gadget release.
  534.  * Upon receiving this message, the gadget should do everything a
  535.  * normal gadget release would do.
  536.  */
  537.  
  538. struct gpKeyGoInactive
  539. {
  540.     ULONG MethodID;            /* GM_KEYGOINACTIVE */
  541.     struct GadgetInfo *gpki_GInfo;
  542.     ULONG gpki_Abort;            /* TRUE if input was aborted */
  543. };
  544.  
  545. /*****************************************************************************/
  546.  
  547. /* Include obsolete identifiers: */
  548. #ifndef INTUITION_IOBSOLETE_H
  549. #include <intuition/iobsolete.h>
  550. #endif
  551.  
  552. /*****************************************************************************/
  553.  
  554. #endif
  555.