WB Types Reference

Per-function autodoc pages link to these types via the type name (e.g., [List](types-wb.md#list)).

Clickable inner types: inside each struct definition, field types that are themselves structs/unions/enums are clickable hyperlinks to their own definitions.

Contents

startup.h


workbench.h


Workbench object type constants

Source: workbench/workbench.h


#define WBDISK      1
#define WBDRAWER    2
#define WBTOOL      3
#define WBPROJECT   4
#define WBGARBAGE   5
#define WBDEVICE    6
#define WBKICK      7
#define WBAPPICON   8

These constants are passed to icon.library functions such as NewDiskObject(), GetDefDiskObject() and PutIconTagList(), and also appear in the ism_Type field of struct IconSelectMsg.


WBArg

Source: workbench/startup.h


struct WBArg {
    BPTR        wa_Lock;    /* a lock descriptor */
    STRPTR      wa_Name;    /* a string relative to that lock */
};


WBStartup

Source: workbench/startup.h


struct WBStartup {
    struct Message    sm_Message; /* a standard message structure */
    struct MsgPort *  sm_Process; /* the process descriptor for you */
    BPTR        sm_Segment; /* a descriptor for your code */
    LONG        sm_NumArgs; /* the number of elements in ArgList */
    STRPTR      sm_ToolWindow;  /* description of window */
    struct WBArg *  sm_ArgList; /* the arguments themselves */
};


AppIcon

Source: workbench/workbench.h


struct AppIcon          { void * ai_PRIVATE;   };


AppIconRenderMsg

Source: workbench/workbench.h


struct AppIconRenderMsg
{
    struct RastPort *    arm_RastPort;   /* RastPort to render into */
    struct DiskObject *  arm_Icon;   /* The icon to be rendered */
    STRPTR          arm_Label;  /* The icon label txt */
    struct TagItem *   arm_Tags;   /* Further tags to be passed on
                         * to DrawIconStateA().
                         */

    WORD            arm_Left;   /* \ Rendering origin, not taking the */
    WORD            arm_Top;    /* / button border into account. */

    WORD            arm_Width;  /* \ Limit your rendering to */
    WORD            arm_Height; /* / this area. */

    ULONG           arm_State;  /* IDS_SELECTED, IDS_NORMAL, etc. */
};


AppMenu

Source: workbench/workbench.h


struct AppMenu          { void * am_PRIVATE;   };


AppMenuItem

Source: workbench/workbench.h


struct AppMenuItem      { void * ami_PRIVATE;  };


AppMessage

Source: workbench/workbench.h


struct AppMessage {
    struct Message am_Message;    /* standard message structure */
    UWORD am_Type;      /* message type */
    ULONG am_UserData;      /* application specific */
    ULONG am_ID;        /* application definable ID */
    LONG am_NumArgs;        /* # of elements in arglist */
    struct WBArg *am_ArgList;   /* the arguments themselves */
    UWORD am_Version;       /* will be >= AM_VERSION */
    UWORD am_Class;     /* message class */
    WORD am_MouseX;     /* mouse x position of event */
    WORD am_MouseY;     /* mouse y position of event */
    ULONG am_Seconds;       /* current system clock time */
    ULONG am_Micros;        /* current system clock time */
    ULONG am_Reserved[8];   /* avoid recompilation */
};


AppWindow

Source: workbench/workbench.h


struct AppWindow      { void * aw_PRIVATE;   };


AppWindowDropZone

Source: workbench/workbench.h


struct AppWindowDropZone  { void * awdz_PRIVATE; };


AppWindowDropZoneMsg

Source: workbench/workbench.h


struct AppWindowDropZoneMsg
{
    struct RastPort *    adzm_RastPort;      /* RastPort to render into. */
    struct IBox     adzm_DropZoneBox;   /* Limit your rendering to this area. */
    ULONG           adzm_ID;        /* \ These come from straight */
    ULONG           adzm_UserData;      /* / from AddAppWindowDropZoneA(). */
    LONG            adzm_Action;        /* See below for a list of actions. */
};


CopyBeginMsg

Source: workbench/workbench.h


struct CopyBeginMsg
{
    ULONG   cbm_Length;     /* Size of this data structure in bytes. */
    LONG    cbm_Action;     /* Will be set to CPACTION_Begin (see below). */
    BPTR    cbm_SourceDrawer;   /* A lock on the source drawer. */
    BPTR    cbm_DestinationDrawer;  /* A lock on the destination drawer. */
};


CopyDataMsg

Source: workbench/workbench.h


struct CopyDataMsg
{
    ULONG   cdm_Length;     /* Size of this data structure in bytes. */
    LONG    cdm_Action;     /* Will be set to CPACTION_Copy (see below). */

    BPTR    cdm_SourceLock;     /* A lock on the parent directory of the
                     * source file/drawer.
                     */
    STRPTR  cdm_SourceName;     /* The name of the source file or drawer. */

    BPTR    cdm_DestinationLock;    /* A lock on the parent directory of the
                     * destination file/drawer.
                     */
    STRPTR  cdm_DestinationName;    /* The name of the destination file/drawer.
                     * This may or may not match the name of
                     * the source file/drawer in case the
                     * data is to be copied under a different
                     * name. For example, this is the case
                     * with the Workbench "Copy" command which
                     * creates duplicates of file/drawers by
                     * prefixing the duplicate's name with
                     * "Copy_XXX_of".
                     */
    LONG    cdm_DestinationX;   /* When the icon corresponding to the
                     * destination is written to disk, this
                     * is the position (put into its
                     * DiskObject->do_CurrentX/DiskObject->do_CurrentY
                     * fields) it should be placed at.
                     */
    LONG    cdm_DestinationY;
};


CopyEndMsg

Source: workbench/workbench.h


struct CopyEndMsg
{
    ULONG   cem_Length;     /* Size of this data structure in bytes. */
    LONG    cem_Action;     /* Will be set to CPACTION_End (see below). */
};


DeleteBeginMsg

Source: workbench/workbench.h


struct DeleteBeginMsg
{
    ULONG   dbm_Length;     /* Size of this data structure in bytes. */
    LONG    dbm_Action;     /* Will be set to either DLACTION_BeginDiscard
                     * or DLACTION_BeginEmptyTrash (see below).
                     */
};


DeleteDataMsg

Source: workbench/workbench.h


struct DeleteDataMsg
{
    ULONG   ddm_Length;     /* Size of this data structure in bytes. */
    LONG    ddm_Action;     /* Will be set to either DLACTION_DeleteContents
                     * or DLACTION_DeleteObject (see below).
                     */
    BPTR    ddm_Lock;       /* A Lock on the parent directory of the object
                     * whose contents or which itself should be
                     * deleted.
                     */
    STRPTR  ddm_Name;       /* The name of the object whose contents or
                     * which itself should be deleted.
                     */
};


DeleteEndMsg

Source: workbench/workbench.h


struct DeleteEndMsg
{
    ULONG   dem_Length;     /* Size of this data structure in bytes. */
    LONG    dem_Action;     /* Will be set to DLACTION_End (see below). */
};


DiskObject

Source: workbench/workbench.h


struct DiskObject {
    UWORD       do_Magic; /* a magic number at the start of the file */
    UWORD       do_Version; /* a version number, so we can change it */
    struct Gadget     do_Gadget;  /* a copy of in core gadget */
    UBYTE       do_Type;
    STRPTR      do_DefaultTool;
    STRPTR *        do_ToolTypes;
    LONG        do_CurrentX;
    LONG        do_CurrentY;
    struct DrawerData *  do_DrawerData;
    STRPTR      do_ToolWindow;  /* only applies to tools */
    LONG        do_StackSize;   /* only applies to tools */

};


DrawerData

Source: workbench/workbench.h


struct DrawerData {
    struct NewWindow   dd_NewWindow;   /* args to open window */
    LONG        dd_CurrentX;    /* current x coordinate of origin */
    LONG        dd_CurrentY;    /* current y coordinate of origin */
    ULONG       dd_Flags;   /* flags for drawer */
    UWORD       dd_ViewModes;   /* view mode for drawer */
};


FreeList

Source: workbench/workbench.h


struct FreeList {
    WORD        fl_NumFree;
    struct List      fl_MemList;
};


IconSelectMsg

Source: workbench/workbench.h


struct IconSelectMsg
{
    /* Size of this data structure (in bytes). */
    ULONG           ism_Length;

    /* Lock on the drawer this object resides in,
     * NULL for Workbench backdrop (devices).
     */
    BPTR            ism_Drawer;

    /* Name of the object in question. */
    STRPTR          ism_Name;

    /* One of WBDISK, WBDRAWER, WBTOOL, WBPROJECT,
     * WBGARBAGE, WBDEVICE, WBKICK or WBAPPICON.
     */
    UWORD           ism_Type;

    /* TRUE if currently selected, FALSE otherwise. */
    BOOL            ism_Selected;

    /* Pointer to the list of tag items passed to
     * ChangeWorkbenchSelectionA().
     */
    struct TagItem *   ism_Tags;

    /* Pointer to the window attached to this icon,
     * if the icon is a drawer-like object.
     */
    struct Window *       ism_DrawerWindow;

    /* Pointer to the window the icon resides in. */
    struct Window *       ism_ParentWindow;

    /* Position and size of the icon; note that the
     * icon may not entirely reside within the visible
     * bounds of the parent window.
     */
    WORD            ism_Left;
    WORD            ism_Top;
    WORD            ism_Width;
    WORD            ism_Height;
};


OldDrawerData

Source: workbench/workbench.h


struct OldDrawerData { /* pre V36 definition */
    struct NewWindow   dd_NewWindow;   /* args to open window */
    LONG        dd_CurrentX;    /* current x coordinate of origin */
    LONG        dd_CurrentY;    /* current y coordinate of origin */
};


SetupCleanupHookMsg

Source: workbench/workbench.h


struct SetupCleanupHookMsg
{
    ULONG   schm_Length;    /* Size of this data structure (in bytes). */
    LONG    schm_State; /* See below for definitions. */
};


TextInputMsg

Source: workbench/workbench.h


struct TextInputMsg
{
    ULONG   tim_Length;         /* Size of this data structure
                         * in bytes.
                         */
    LONG    tim_Action;         /* One of the TIACTION_...
                         * values listed below.
                         */
    STRPTR  tim_Prompt;         /* The Workbench suggested
                         * result, depending on what
                         * kind of input is requested
                         * (as indicated by the
                         * tim_Action member).
                         */
};