## AtkObject AtkObject — The base object class for the Accessibility Toolkit API. |

## Synopsis

    struct              AtkObject;
    enum                AtkRole;
    AtkRole             atk_role_register                   (const gchar *name);
    enum                AtkLayer;
                        AtkImplementor;
                        AtkPropertyValues;
    gboolean            (*AtkFunction)                      (gpointer data);
    void                (*AtkPropertyChangeHandler)         (AtkObject *Param1,
                                                             AtkPropertyValues *Param2);
    AtkObject *         atk_implementor_ref_accessible      (AtkImplementor *implementor);
    const gchar *       atk_object_get_name                 (AtkObject *accessible);
    const gchar *       atk_object_get_description          (AtkObject *accessible);
    AtkObject *         atk_object_get_parent               (AtkObject *accessible);
    gint                atk_object_get_n_accessible_children
                                                            (AtkObject *accessible);
    AtkObject *         atk_object_ref_accessible_child     (AtkObject *accessible,
                                                             gint i);
    AtkRelationSet *    atk_object_ref_relation_set         (AtkObject *accessible);
    AtkLayer            atk_object_get_layer                (AtkObject *accessible);
    gint                atk_object_get_mdi_zorder           (AtkObject *accessible);
    AtkRole             atk_object_get_role                 (AtkObject *accessible);
    AtkStateSet *       atk_object_ref_state_set            (AtkObject *accessible);
    gint                atk_object_get_index_in_parent      (AtkObject *accessible);
    void                atk_object_set_name                 (AtkObject *accessible,
                                                             const gchar *name);
    void                atk_object_set_description          (AtkObject *accessible,
                                                             const gchar *description);
    void                atk_object_set_parent               (AtkObject *accessible,
                                                             AtkObject *parent);
    void                atk_object_set_role                 (AtkObject *accessible,
                                                             AtkRole role);
    guint               atk_object_connect_property_change_handler
                                                            (AtkObject *accessible,
                                                             AtkPropertyChangeHandler *handler);
    void                atk_object_remove_property_change_handler
                                                            (AtkObject *accessible,
                                                             guint handler_id);
    void                atk_object_notify_state_change      (AtkObject *accessible,
                                                             AtkState state,
                                                             gboolean value);
    void                atk_object_initialize               (AtkObject *accessible,
                                                             gpointer data);
    gboolean            atk_object_add_relationship         (AtkObject *object,
                                                             AtkRelationType relationship,
                                                             AtkObject *target);
    gboolean            atk_object_remove_relationship      (AtkObject *object,
                                                             AtkRelationType relationship,
                                                             AtkObject *target);
    AtkAttributeSet *   atk_object_get_attributes           (AtkObject *accessible);
    const gchar *       atk_role_get_name                   (AtkRole role);
    const gchar *       atk_role_get_localized_name         (AtkRole role);
    AtkRole             atk_role_for_name                   (const gchar *name);

## Object Hierarchy

      GObject
       +----AtkObject
             +----AtkGObjectAccessible
             +----AtkNoOpObject

## Properties

      "accessible-component-layer" gint                  : Read
      "accessible-component-mdi-zorder" gint                  : Read
      "accessible-description"   gchar*                : Read / Write
      "accessible-hypertext-nlinks" gint                  : Read
      "accessible-name"          gchar*                : Read / Write
      "accessible-parent"        AtkObject*            : Read / Write
      "accessible-role"          gint                  : Read / Write
      "accessible-table-caption" gchar*                : Read / Write
      "accessible-table-caption-object" AtkObject*            : Read / Write
      "accessible-table-column-description" gchar*                : Read / Write
      "accessible-table-column-header" AtkObject*            : Read / Write
      "accessible-table-row-description" gchar*                : Read / Write
      "accessible-table-row-header" AtkObject*            : Read / Write
      "accessible-table-summary" AtkObject*            : Read / Write
      "accessible-value"         gdouble               : Read / Write

## Signals

      "active-descendant-changed"                      : Has Details
      "children-changed"                               : Has Details
      "focus-event"                                    : Run Last
      "property-change"                                : Has Details
      "state-change"                                   : Has Details
      "visible-data-changed"                           : Run Last

## Description

This class is the primary class for accessibility support via the Accessibility ToolKit (ATK). Objects which are instances of AtkObject (or instances of AtkObject-derived types) are queried for properties which relate basic (and generic) properties of a UI component such as name and description. Instances of AtkObject may also be queried as to whether they implement other ATK interfaces (e.g. AtkAction, AtkComponent, etc.), as appropriate to the role which a given UI component plays in a user interface.

All UI components in an application which provide useful information or services to the user must provide corresponding AtkObject instances on request (in GTK+, for instance, usually on a call to #`gtk_widget_get_accessible()`), either via ATK support built into the toolkit for the widget class or ancestor class, or in the case of custom widgets, if the inherited AtkObject implementation is insufficient, via instances of a new AtkObject subclass.

## Details

### struct AtkObject

    struct AtkObject;

The AtkObject structure should not be accessed directly.

### enum AtkRole

    typedef enum {
      ATK_ROLE_INVALID = 0,
      ATK_ROLE_ACCEL_LABEL,
      ATK_ROLE_ALERT,
      ATK_ROLE_ANIMATION,
      ATK_ROLE_ARROW,
      ATK_ROLE_CALENDAR,
      ATK_ROLE_CANVAS,
      ATK_ROLE_CHECK_BOX,
      ATK_ROLE_CHECK_MENU_ITEM,
      ATK_ROLE_COLOR_CHOOSER,
      ATK_ROLE_COLUMN_HEADER,
      ATK_ROLE_COMBO_BOX,
      ATK_ROLE_DATE_EDITOR,
      ATK_ROLE_DESKTOP_ICON,
      ATK_ROLE_DESKTOP_FRAME,
      ATK_ROLE_DIAL,
      ATK_ROLE_DIALOG,
      ATK_ROLE_DIRECTORY_PANE,
      ATK_ROLE_DRAWING_AREA,
      ATK_ROLE_FILE_CHOOSER,
      ATK_ROLE_FILLER,
      ATK_ROLE_FONT_CHOOSER,
      ATK_ROLE_FRAME,
      ATK_ROLE_GLASS_PANE,
      ATK_ROLE_HTML_CONTAINER,
      ATK_ROLE_ICON,
      ATK_ROLE_IMAGE,
      ATK_ROLE_INTERNAL_FRAME,
      ATK_ROLE_LABEL,
      ATK_ROLE_LAYERED_PANE,
      ATK_ROLE_LIST,
      ATK_ROLE_LIST_ITEM,
      ATK_ROLE_MENU,
      ATK_ROLE_MENU_BAR,
      ATK_ROLE_MENU_ITEM,
      ATK_ROLE_OPTION_PANE,
      ATK_ROLE_PAGE_TAB,
      ATK_ROLE_PAGE_TAB_LIST,
      ATK_ROLE_PANEL,
      ATK_ROLE_PASSWORD_TEXT,
      ATK_ROLE_POPUP_MENU,
      ATK_ROLE_PROGRESS_BAR,
      ATK_ROLE_PUSH_BUTTON,
      ATK_ROLE_RADIO_BUTTON,
      ATK_ROLE_RADIO_MENU_ITEM,
      ATK_ROLE_ROOT_PANE,
      ATK_ROLE_ROW_HEADER,
      ATK_ROLE_SCROLL_BAR,
      ATK_ROLE_SCROLL_PANE,
      ATK_ROLE_SEPARATOR,
      ATK_ROLE_SLIDER,
      ATK_ROLE_SPLIT_PANE,
      ATK_ROLE_SPIN_BUTTON,
      ATK_ROLE_STATUSBAR,
      ATK_ROLE_TABLE,
      ATK_ROLE_TABLE_CELL,
      ATK_ROLE_TABLE_COLUMN_HEADER,
      ATK_ROLE_TABLE_ROW_HEADER,
      ATK_ROLE_TEAR_OFF_MENU_ITEM,
      ATK_ROLE_TERMINAL,
      ATK_ROLE_TEXT,
      ATK_ROLE_TOGGLE_BUTTON,
      ATK_ROLE_TOOL_BAR,
      ATK_ROLE_TOOL_TIP,
      ATK_ROLE_TREE,
      ATK_ROLE_TREE_TABLE,
      ATK_ROLE_UNKNOWN,
      ATK_ROLE_VIEWPORT,
      ATK_ROLE_WINDOW,
      ATK_ROLE_HEADER,
      ATK_ROLE_FOOTER,
      ATK_ROLE_PARAGRAPH,
      ATK_ROLE_RULER,
      ATK_ROLE_APPLICATION,
      ATK_ROLE_AUTOCOMPLETE,
      ATK_ROLE_EDITBAR,
      ATK_ROLE_EMBEDDED,
      ATK_ROLE_ENTRY,
      ATK_ROLE_CHART,
      ATK_ROLE_CAPTION,
      ATK_ROLE_DOCUMENT_FRAME,
      ATK_ROLE_HEADING,
      ATK_ROLE_PAGE,
      ATK_ROLE_SECTION,
      ATK_ROLE_REDUNDANT_OBJECT,
      ATK_ROLE_FORM,
      ATK_ROLE_LINK,
      ATK_ROLE_INPUT_METHOD_WINDOW,
      ATK_ROLE_TABLE_ROW,
      ATK_ROLE_TREE_ITEM,
      ATK_ROLE_DOCUMENT_SPREADSHEET,
      ATK_ROLE_DOCUMENT_PRESENTATION,
      ATK_ROLE_DOCUMENT_TEXT,
      ATK_ROLE_DOCUMENT_WEB,
      ATK_ROLE_DOCUMENT_EMAIL,
      ATK_ROLE_COMMENT,
      ATK_ROLE_LIST_BOX,
      ATK_ROLE_GROUPING,
      ATK_ROLE_IMAGE_MAP,
      ATK_ROLE_NOTIFICATION,
      ATK_ROLE_INFO_BAR,
      ATK_ROLE_LAST_DEFINED
    } AtkRole;

Describes the role of an object

These are the built-in enumerated roles that UI components can have in ATK. Other roles may be added at runtime, so an AtkRole >= ATK_ROLE_LAST_DEFINED is not necessarily an error.

`ATK_ROLE_INVALID` | Invalid role
`ATK_ROLE_ACCEL_LABEL` | A label which represents an accelerator
`ATK_ROLE_ALERT` | An object which is an alert to the user. Assistive Technologies typically respond to ATK_ROLE_ALERT by reading the entire onscreen contents of containers advertising this role. Should be used for warning dialogs, etc.
`ATK_ROLE_ANIMATION` | An object which is an animated image
`ATK_ROLE_ARROW` | An arrow in one of the four cardinal directions
`ATK_ROLE_CALENDAR` | An object that displays a calendar and allows the user to select a date
`ATK_ROLE_CANVAS` | An object that can be drawn into and is used to trap events
`ATK_ROLE_CHECK_BOX` | A choice that can be checked or unchecked and provides a separate indicator for the current state
`ATK_ROLE_CHECK_MENU_ITEM` | A menu item with a check box
`ATK_ROLE_COLOR_CHOOSER` | A specialized dialog that lets the user choose a color
`ATK_ROLE_COLUMN_HEADER` | The header for a column of data
`ATK_ROLE_COMBO_BOX` | A collapsible list of choices the user can select from
`ATK_ROLE_DATE_EDITOR` | An object whose purpose is to allow a user to edit a date
`ATK_ROLE_DESKTOP_ICON` | An inconifed internal frame within a DESKTOP_PANE
`ATK_ROLE_DESKTOP_FRAME` | A pane that supports internal frames and iconified versions of those internal frames
`ATK_ROLE_DIAL` | An object whose purpose is to allow a user to set a value
`ATK_ROLE_DIALOG` | A top level window with title bar and a border
`ATK_ROLE_DIRECTORY_PANE` | A pane that allows the user to navigate through and select the contents of a directory
`ATK_ROLE_DRAWING_AREA` | An object used for drawing custom user interface elements
`ATK_ROLE_FILE_CHOOSER` | A specialized dialog that lets the user choose a file
`ATK_ROLE_FILLER` | A object that fills up space in a user interface
`ATK_ROLE_FONT_CHOOSER` | A specialized dialog that lets the user choose a font
`ATK_ROLE_FRAME` | A top level window with a title bar, border, menubar, etc.
`ATK_ROLE_GLASS_PANE` | A pane that is guaranteed to be painted on top of all panes beneath it
`ATK_ROLE_HTML_CONTAINER` | A document container for HTML, whose children represent the document content
`ATK_ROLE_ICON` | A small fixed size picture, typically used to decorate components
`ATK_ROLE_IMAGE` | An object whose primary purpose is to display an image
`ATK_ROLE_INTERNAL_FRAME` | A frame-like object that is clipped by a desktop pane
`ATK_ROLE_LABEL` | An object used to present an icon or short string in an interface
`ATK_ROLE_LAYERED_PANE` | A specialized pane that allows its children to be drawn in layers, providing a form of stacking order
`ATK_ROLE_LIST` | An object that presents a list of objects to the user and allows the user to select one or more of them
`ATK_ROLE_LIST_ITEM` | An object that represents an element of a list
`ATK_ROLE_MENU` | An object usually found inside a menu bar that contains a list of actions the user can choose from
`ATK_ROLE_MENU_BAR` | An object usually drawn at the top of the primary dialog box of an application that contains a list of menus the user can choose from
`ATK_ROLE_MENU_ITEM` | An object usually contained in a menu that presents an action the user can choose
`ATK_ROLE_OPTION_PANE` | A specialized pane whose primary use is inside a DIALOG
`ATK_ROLE_PAGE_TAB` | An object that is a child of a page tab list
`ATK_ROLE_PAGE_TAB_LIST` | An object that presents a series of panels (or page tabs), one at a time, through some mechanism provided by the object
`ATK_ROLE_PANEL` | A generic container that is often used to group objects
`ATK_ROLE_PASSWORD_TEXT` | A text object uses for passwords, or other places where the text content is not shown visibly to the user
`ATK_ROLE_POPUP_MENU` | A temporary window that is usually used to offer the user a list of choices, and then hides when the user selects one of those choices
`ATK_ROLE_PROGRESS_BAR` | An object used to indicate how much of a task has been completed
`ATK_ROLE_PUSH_BUTTON` | An object the user can manipulate to tell the application to do something
`ATK_ROLE_RADIO_BUTTON` | A specialized check box that will cause other radio buttons in the same group to become unchecked when this one is checked
`ATK_ROLE_RADIO_MENU_ITEM` | A check menu item which belongs to a group. At each instant exactly one of the radio menu items from a group is selected
`ATK_ROLE_ROOT_PANE` | A specialized pane that has a glass pane and a layered pane as its children
`ATK_ROLE_ROW_HEADER` | The header for a row of data
`ATK_ROLE_SCROLL_BAR` | An object usually used to allow a user to incrementally view a large amount of data.
`ATK_ROLE_SCROLL_PANE` | An object that allows a user to incrementally view a large amount of information
`ATK_ROLE_SEPARATOR` | An object usually contained in a menu to provide a visible and logical separation of the contents in a menu
`ATK_ROLE_SLIDER` | An object that allows the user to select from a bounded range
`ATK_ROLE_SPLIT_PANE` | A specialized panel that presents two other panels at the same time
`ATK_ROLE_SPIN_BUTTON` | An object used to get an integer or floating point number from the user
`ATK_ROLE_STATUSBAR` | An object which reports messages of minor importance to the user
`ATK_ROLE_TABLE` | An object used to represent information in terms of rows and columns
`ATK_ROLE_TABLE_CELL` | A cell in a table
`ATK_ROLE_TABLE_COLUMN_HEADER` | The header for a column of a table
`ATK_ROLE_TABLE_ROW_HEADER` | The header for a row of a table
`ATK_ROLE_TEAR_OFF_MENU_ITEM` | A menu item used to tear off and reattach its menu
`ATK_ROLE_TERMINAL` | An object that represents an accessible terminal. `Since`: ATK-0.6
`ATK_ROLE_TEXT` | An object that presents text to the user
`ATK_ROLE_TOGGLE_BUTTON` | A specialized push button that can be checked or unchecked, but does not provide a separate indicator for the current state
`ATK_ROLE_TOOL_BAR` | A bar or palette usually composed of push buttons or toggle buttons
`ATK_ROLE_TOOL_TIP` | An object that provides information about another object
`ATK_ROLE_TREE` | An object used to represent hierarchical information to the user
`ATK_ROLE_TREE_TABLE` | An object capable of expanding and collapsing rows as well as showing multiple columns of data. `Since`: ATK-0.7
`ATK_ROLE_UNKNOWN` | The object contains some Accessible information, but its role is not known
`ATK_ROLE_VIEWPORT` | An object usually used in a scroll pane
`ATK_ROLE_WINDOW` | A top level window with no title or border.
`ATK_ROLE_HEADER` | An object that serves as a document header. `Since`: ATK-1.1.1
`ATK_ROLE_FOOTER` | An object that serves as a document footer. `Since`: ATK-1.1.1
`ATK_ROLE_PARAGRAPH` | An object which is contains a paragraph of text content. `Since`: ATK-1.1.1
`ATK_ROLE_RULER` | An object which describes margins and tab stops, etc. for text objects which it controls (should have CONTROLLER_FOR relation to such). `Since`: ATK-1.1.1
`ATK_ROLE_APPLICATION` | The object is an application object, which may contain `ATK_ROLE_FRAME` objects or other types of accessibles. The root accessible of any application's ATK hierarchy should have ATK_ROLE_APPLICATION. `Since`: ATK-1.1.4
`ATK_ROLE_AUTOCOMPLETE` | The object is a dialog or list containing items for insertion into an entry widget, for instance a list of words for completion of a text entry. `Since`: ATK-1.3
`ATK_ROLE_EDITBAR` | The object is an editable text object in a toolbar. `Since`: ATK-1.5
`ATK_ROLE_EMBEDDED` | The object is an embedded container within a document or panel. This role is a grouping "hint" indicating that the contained objects share a context. `Since`: ATK-1.7.2
`ATK_ROLE_ENTRY` | The object is a component whose textual content may be entered or modified by the user, provided `ATK_STATE_EDITABLE` is present. `Since`: ATK-1.11
`ATK_ROLE_CHART` | The object is a graphical depiction of quantitative data. It may contain multiple subelements whose attributes and/or description may be queried to obtain both the quantitative data and information about how the data is being presented. The LABELLED_BY relation is particularly important in interpreting objects of this type, as is the accessible-description property. `Since`: ATK-1.11
`ATK_ROLE_CAPTION` | The object contains descriptive information, usually textual, about another user interface element such as a table, chart, or image. `Since`: ATK-1.11
`ATK_ROLE_DOCUMENT_FRAME` | The object is a visual frame or container which contains a view of document content. Document frames may occur within another Document instance, in which case the second document may be said to be embedded in the containing instance. HTML frames are often ROLE_DOCUMENT_FRAME. Either this object, or a singleton descendant, should implement the Document interface. `Since`: ATK-1.11
`ATK_ROLE_HEADING` | The object serves as a heading for content which follows it in a document. The 'heading level' of the heading, if availabe, may be obtained by querying the object's attributes.
`ATK_ROLE_PAGE` | The object is a containing instance which encapsulates a page of information. `ATK_ROLE_PAGE` is used in documents and content which support a paginated navigation model. `Since`: ATK-1.11
`ATK_ROLE_SECTION` | The object is a containing instance of document content which constitutes a particular 'logical' section of the document. The type of content within a section, and the nature of the section division itself, may be obtained by querying the object's attributes. Sections may be nested. `Since`: ATK-1.11
`ATK_ROLE_REDUNDANT_OBJECT` | The object is redundant with another object in the hierarchy, and is exposed for purely technical reasons. Objects of this role should normally be ignored by clients. `Since`: ATK-1.11
`ATK_ROLE_FORM` | The object is a container for form controls, for instance as part of a web form or user-input form within a document. This role is primarily a tag/convenience for clients when navigating complex documents, it is not expected that ordinary GUI containers will always have ATK_ROLE_FORM. `Since`: ATK-1.12.0
`ATK_ROLE_LINK` | The object is a hypertext anchor, i.e. a "link" in a hypertext document. Such objects are distinct from 'inline' content which may also use the Hypertext/Hyperlink interfaces to indicate the range/location within a text object where an inline or embedded object lies. `Since`: ATK-1.12.1
`ATK_ROLE_INPUT_METHOD_WINDOW` | The object is a window or similar viewport which is used to allow composition or input of a 'complex character', in other words it is an "input method window." `Since`: ATK-1.12.1
`ATK_ROLE_TABLE_ROW` | A row in a table. `Since`: ATK-2.1.0
`ATK_ROLE_TREE_ITEM` | An object that represents an element of a tree. `Since`: ATK-2.1.0
`ATK_ROLE_DOCUMENT_SPREADSHEET` | A document frame which contains a spreadsheet. `Since`: ATK-2.1.0
`ATK_ROLE_DOCUMENT_PRESENTATION` | A document frame which contains a presentation or slide content. `Since`: ATK-2.1.0
`ATK_ROLE_DOCUMENT_TEXT` | A document frame which contains textual content, such as found in a word processing application. `Since`: ATK-2.1.0
`ATK_ROLE_DOCUMENT_WEB` | A document frame which contains HTML or other markup suitable for display in a web browser. `Since`: ATK-2.1.0
`ATK_ROLE_DOCUMENT_EMAIL` | A document frame which contains email content to be displayed or composed either in plain text or HTML. `Since`: ATK-2.1.0
`ATK_ROLE_COMMENT` | An object found within a document and designed to present a comment, note, or other annotation. In some cases, this object might not be visible until activated. `Since`: ATK-2.1.0
`ATK_ROLE_LIST_BOX` | A non-collapsible list of choices the user can select from. `Since`: ATK-2.1.0
`ATK_ROLE_GROUPING` | A group of related widgets. This group typically has a label. `Since`: ATK-2.1.0
`ATK_ROLE_IMAGE_MAP` | An image map object. Usually a graphic with multiple hotspots, where each hotspot can be activated resulting in the loading of another document or section of a document. `Since`: ATK-2.1.0
`ATK_ROLE_NOTIFICATION` | A transitory object designed to present a message to the user, typically at the desktop level rather than inside a particular application. `Since`: ATK-2.1.0
`ATK_ROLE_INFO_BAR` | An object designed to present a message to the user within an existing window. `Since`: ATK-2.1.0
`ATK_ROLE_LAST_DEFINED` | not a valid role, used for finding end of the enumeration

### atk_role_register ()

    AtkRole             atk_role_register                   (const gchar *name);

Registers the role specified by `name`.

`name` : | a character string describing the new role.
Returns : | an AtkRole for the new role.

### enum AtkLayer

    typedef enum {
      ATK_LAYER_INVALID,
      ATK_LAYER_BACKGROUND,
      ATK_LAYER_CANVAS,
      ATK_LAYER_WIDGET,
      ATK_LAYER_MDI,
      ATK_LAYER_POPUP,
      ATK_LAYER_OVERLAY,
      ATK_LAYER_WINDOW
    } AtkLayer;

Describes the layer of a component

These enumerated "layer values" are used when determining which UI rendering layer a component is drawn into, which can help in making determinations of when components occlude one another.

`ATK_LAYER_INVALID` | The object does not have a layer
`ATK_LAYER_BACKGROUND` | This layer is reserved for the desktop background
`ATK_LAYER_CANVAS` | This layer is used for Canvas components
`ATK_LAYER_WIDGET` | This layer is normally used for components
`ATK_LAYER_MDI` | This layer is used for layered components
`ATK_LAYER_POPUP` | This layer is used for popup components, such as menus
`ATK_LAYER_OVERLAY` | This layer is reserved for future use.
`ATK_LAYER_WINDOW` | This layer is used for toplevel windows.

### AtkImplementor

    typedef struct _AtkImplementor AtkImplementor;

The AtkImplementor interface is implemented by objects for which AtkObject peers may be obtained via calls to iface->(ref_accessible)(implementor);

### AtkPropertyValues

    typedef struct {
      const gchar  *property_name;
      GValue old_value;
      GValue new_value;
    } AtkPropertyValues;

`note`: For most properties the old_value field of AtkPropertyValues will not contain a valid value.

Currently, the only property for which old_value is used is accessible-state; for instance if there is a focus state the property change handler will be called for the object which lost the focus with the old_value containing an AtkState value corresponding to focused and the property change handler will be called for the object which received the focus with the new_value containing an AtkState value corresponding to focused.

The Atk PropertyValue structure is used when notifying a change in property. Currently, the only property for which old_value is used is accessible-state; for instance if there is a focus change the property change handler will be called for the object which lost the focus with the old_value containing the AtkState value corresponding to focused and the property change handler will be called for the object which received the focus with the new_value containing the AtkState value corresponding to focused.

const gchar *`property_name`; | The name of the ATK property which is being presented or which has been changed.
GValue `old_value`; | The old property value, NULL; in some contexts this value is undefined (see note below).
GValue `new_value`; | The new value of the named property.

### AtkFunction ()

    gboolean            (*AtkFunction)                      (gpointer data);

An AtkFunction is a function definition used for padding which has been added to class and interface structures to allow for expansion in the future.

`data` : | a gpointer to parameter data.
Returns : | Nothing useful, this is only a dummy prototype.

### AtkPropertyChangeHandler ()

    void                (*AtkPropertyChangeHandler)         (AtkObject *Param1,
                                                             AtkPropertyValues *Param2);

An AtkPropertyChangeHandler is a function which is executed when an AtkObject's property changes value. It is specified in a call to `atk_object_connect_property_change_handler()`.

`Param1` : | an AtkObject
`Param2` : | an AtkPropertyValues

### atk_implementor_ref_accessible ()

    AtkObject *         atk_implementor_ref_accessible      (AtkImplementor *implementor);

Gets a reference to an object's AtkObject implementation, if the object implements AtkObjectIface

`implementor` : | The GObject instance which should implement AtkImplementorIface if a non-null return value is required.
Returns : | a reference to an object's AtkObject implementation. [transfer full]

### atk_object_get_name ()

    const gchar *       atk_object_get_name                 (AtkObject *accessible);

Gets the accessible name of the accessible.

`accessible` : | an AtkObject
Returns : | a character string representing the accessible name of the object.

### atk_object_get_description ()

    const gchar *       atk_object_get_description          (AtkObject *accessible);

Gets the accessible description of the accessible.

`accessible` : | an AtkObject
Returns : | a character string representing the accessible description of the accessible.

### atk_object_get_parent ()

    AtkObject *         atk_object_get_parent               (AtkObject *accessible);

Gets the accessible parent of the accessible.

`accessible` : | an AtkObject
Returns : | a AtkObject representing the accessible parent of the accessible. [transfer none]

### atk_object_get_n_accessible_children ()

    gint                atk_object_get_n_accessible_children
                                                            (AtkObject *accessible);

Gets the number of accessible children of the accessible.

`accessible` : | an AtkObject
Returns : | an integer representing the number of accessible children of the accessible.

### atk_object_ref_accessible_child ()

    AtkObject *         atk_object_ref_accessible_child     (AtkObject *accessible,
                                                             gint i);

Gets a reference to the specified accessible child of the object. The accessible children are 0-based so the first accessible child is at index 0, the second at index 1 and so on.

`accessible` : | an AtkObject
`i` : | a gint representing the position of the child, starting from 0
Returns : | an AtkObject representing the specified accessible child of the accessible. [transfer full]

### atk_object_ref_relation_set ()

    AtkRelationSet *    atk_object_ref_relation_set         (AtkObject *accessible);

Gets the AtkRelationSet associated with the object.

`accessible` : | an AtkObject
Returns : | an AtkRelationSet representing the relation set of the object. [transfer full]

### atk_object_get_layer ()

    AtkLayer            atk_object_get_layer                (AtkObject *accessible);

### Warning

`atk_object_get_layer` is deprecated and should not be used in newly-written code. Use atk_component_get_layer instead.

Gets the layer of the accessible.

`accessible` : | an AtkObject
Returns : | an AtkLayer which is the layer of the accessible

### atk_object_get_mdi_zorder ()

    gint                atk_object_get_mdi_zorder           (AtkObject *accessible);

### Warning

`atk_object_get_mdi_zorder` is deprecated and should not be used in newly-written code. Use atk_component_get_mdi_zorder instead.

Gets the zorder of the accessible. The value G_MININT will be returned if the layer of the accessible is not ATK_LAYER_MDI.

`accessible` : | an AtkObject
Returns : | a gint which is the zorder of the accessible, i.e. the depth at which the component is shown in relation to other components in the same container.

### atk_object_get_role ()

    AtkRole             atk_object_get_role                 (AtkObject *accessible);

Gets the role of the accessible.

`accessible` : | an AtkObject
Returns : | an AtkRole which is the role of the accessible

### atk_object_ref_state_set ()

    AtkStateSet *       atk_object_ref_state_set            (AtkObject *accessible);

Gets a reference to the state set of the accessible; the caller must unreference it when it is no longer needed.

`accessible` : | an AtkObject
Returns : | a reference to an AtkStateSet which is the state set of the accessible. [transfer full]

### atk_object_get_index_in_parent ()

    gint                atk_object_get_index_in_parent      (AtkObject *accessible);

Gets the 0-based index of this accessible in its parent; returns -1 if the accessible does not have an accessible parent.

`accessible` : | an AtkObject
Returns : | an integer which is the index of the accessible in its parent

### atk_object_set_name ()

    void                atk_object_set_name                 (AtkObject *accessible,
                                                             const gchar *name);

Sets the accessible name of the accessible. You can't set the name to NULL. This is reserved for the initial value. In this aspect NULL is similar to ATK_ROLE_UNKNOWN. If you want to set the name to a empty value you can use "".

`accessible` : | an AtkObject
`name` : | a character string to be set as the accessible name

### atk_object_set_description ()

    void                atk_object_set_description          (AtkObject *accessible,
                                                             const gchar *description);

Sets the accessible description of the accessible. You can't set the description to NULL. This is reserved for the initial value. In this aspect NULL is similar to ATK_ROLE_UNKNOWN. If you want to set the name to a empty value you can use "".

`accessible` : | an AtkObject
`description` : | a character string to be set as the accessible description

### atk_object_set_parent ()

    void                atk_object_set_parent               (AtkObject *accessible,
                                                             AtkObject *parent);

Sets the accessible parent of the accessible.

`accessible` : | an AtkObject
`parent` : | an AtkObject to be set as the accessible parent

### atk_object_set_role ()

    void                atk_object_set_role                 (AtkObject *accessible,
                                                             AtkRole role);

Sets the role of the accessible.

`accessible` : | an AtkObject
`role` : | an AtkRole to be set as the role

### atk_object_connect_property_change_handler ()

    guint               atk_object_connect_property_change_handler
                                                            (AtkObject *accessible,
                                                             AtkPropertyChangeHandler *handler);

Specifies a function to be called when a property changes value.

`accessible` : | an AtkObject
`handler` : | a function to be called when a property changes its value
Returns : | a guint which is the handler id used in `atk_object_remove_property_change_handler()`

### atk_object_remove_property_change_handler ()

    void                atk_object_remove_property_change_handler
                                                            (AtkObject *accessible,
                                                             guint handler_id);

Removes a property change handler.

`accessible` : | an AtkObject
`handler_id` : | a guint which identifies the handler to be removed.

### atk_object_notify_state_change ()

    void                atk_object_notify_state_change      (AtkObject *accessible,
                                                             AtkState state,
                                                             gboolean value);

Emits a state-change signal for the specified state.

`accessible` : | an AtkObject
`state` : | an AtkState whose state is changed
`value` : | a gboolean which indicates whether the state is being set on or off

### atk_object_initialize ()

    void                atk_object_initialize               (AtkObject *accessible,
                                                             gpointer data);

This function is called when implementing subclasses of AtkObject. It does initialization required for the new object. It is intended that this function should called only in the ..._new() functions used to create an instance of a subclass of AtkObject

`accessible` : | a AtkObject
`data` : | a gpointer which identifies the object for which the AtkObject was created.

### atk_object_add_relationship ()

    gboolean            atk_object_add_relationship         (AtkObject *object,
                                                             AtkRelationType relationship,
                                                             AtkObject *target);

Adds a relationship of the specified type with the specified target.

`object` : | The AtkObject to which an AtkRelation is to be added.
`relationship` : | The AtkRelationType of the relation
`target` : | The AtkObject which is to be the target of the relation.
Returns : | TRUE if the relationship is added.

### atk_object_remove_relationship ()

    gboolean            atk_object_remove_relationship      (AtkObject *object,
                                                             AtkRelationType relationship,
                                                             AtkObject *target);

Removes a relationship of the specified type with the specified target.

`object` : | The AtkObject from which an AtkRelation is to be removed.
`relationship` : | The AtkRelationType of the relation
`target` : | The AtkObject which is the target of the relation to be removed.
Returns : | TRUE if the relationship is removed.

### atk_object_get_attributes ()

    AtkAttributeSet *   atk_object_get_attributes           (AtkObject *accessible);

Get a list of properties applied to this object as a whole, as an AtkAttributeSet consisting of name-value pairs. As such these attributes may be considered weakly-typed properties or annotations, as distinct from strongly-typed object data available via other get/set methods. Not all objects have explicit "name-value pair" AtkAttributeSet properties.

`accessible` : | An AtkObject.
Returns : | an AtkAttributeSet consisting of all explicit properties/annotations applied to the object, or an empty set if the object has no name-value pair attributes assigned to it. [transfer none]

Since 1.12

### atk_role_get_name ()

    const gchar *       atk_role_get_name                   (AtkRole role);

Gets the description string describing the AtkRole `role`.

`role` : | The AtkRole whose name is required
Returns : | the string describing the AtkRole

### atk_role_get_localized_name ()

    const gchar *       atk_role_get_localized_name         (AtkRole role);

Gets the localized description string describing the AtkRole `role`.

`role` : | The AtkRole whose localized name is required
Returns : | the localized string describing the AtkRole

### atk_role_for_name ()

    AtkRole             atk_role_for_name                   (const gchar *name);

Get the AtkRole type corresponding to a rolew name.

`name` : | a string which is the (non-localized) name of an ATK role.
Returns : | the AtkRole enumerated type corresponding to the specified name, or ATK_ROLE_INVALID if no matching role is found.

## Property Details

### The `"accessible-component-layer"` property

      "accessible-component-layer" gint                  : Read

The accessible layer of this object.

Allowed values: >= 0

Default value: 0

### The `"accessible-component-mdi-zorder"` property

      "accessible-component-mdi-zorder" gint                  : Read

The accessible MDI value of this object.

Default value: -2147483648

### The `"accessible-description"` property

      "accessible-description"   gchar*                : Read / Write

Description of an object, formatted for assistive technology access.

Default value: NULL

### The `"accessible-hypertext-nlinks"` property

      "accessible-hypertext-nlinks" gint                  : Read

The number of links which the current AtkHypertext has.

Allowed values: >= 0

Default value: 0

### The `"accessible-name"` property

      "accessible-name"          gchar*                : Read / Write

Object instance's name formatted for assistive technology access.

Default value: NULL

### The `"accessible-parent"` property

      "accessible-parent"        AtkObject*            : Read / Write

Is used to notify that the parent has changed.

### The `"accessible-role"` property

      "accessible-role"          gint                  : Read / Write

The accessible role of this object.

Allowed values: >= 0

Default value: 66

### The `"accessible-table-caption"` property

      "accessible-table-caption" gchar*                : Read / Write

Is used to notify that the table caption has changed; this property should not be used. accessible-table-caption-object should be used instead.

Default value: NULL

### The `"accessible-table-caption-object"` property

      "accessible-table-caption-object" AtkObject*            : Read / Write

Is used to notify that the table caption has changed.

### The `"accessible-table-column-description"` property

      "accessible-table-column-description" gchar*                : Read / Write

Is used to notify that the table column description has changed.

Default value: NULL

### The `"accessible-table-column-header"` property

      "accessible-table-column-header" AtkObject*            : Read / Write

Is used to notify that the table column header has changed.

### The `"accessible-table-row-description"` property

      "accessible-table-row-description" gchar*                : Read / Write

Is used to notify that the table row description has changed.

Default value: NULL

### The `"accessible-table-row-header"` property

      "accessible-table-row-header" AtkObject*            : Read / Write

Is used to notify that the table row header has changed.

### The `"accessible-table-summary"` property

      "accessible-table-summary" AtkObject*            : Read / Write

Is used to notify that the table summary has changed.

### The `"accessible-value"` property

      "accessible-value"         gdouble               : Read / Write

Is used to notify that the value has changed.

Allowed values: >= 0

Default value: 0

## Signal Details

### The `"active-descendant-changed"` signal

    void                user_function                      (AtkObject *atkobject,
                                                            gpointer   arg1,
                                                            gpointer   user_data)      : Has Details

The "active-descendant-changed" signal is emitted by an object which has the state ATK_STATE_MANAGES_DESCENDANTS when the focus object in the object changes. For instance, a table will emit the signal when the cell in the table which has focus changes.

`atkobject` : | the object which received the signal.
`arg1` : | the newly focused object.
`user_data` : | user data set when the signal handler was connected.

### The `"children-changed"` signal

    void                user_function                      (AtkObject *atkobject,
                                                            guint      arg1,
                                                            gpointer   arg2,
                                                            gpointer   user_data)      : Has Details

The signal "children-changed" is emitted when a child is added or removed form an object. It supports two details: "add" and "remove"

`atkobject` : | the object which received the signal.
`arg1` : | The index of the added or removed child
`arg2` : | A gpointer to the child AtkObject which was added or removed
`user_data` : | user data set when the signal handler was connected.

### The `"focus-event"` signal

    void                user_function                      (AtkObject *atkobject,
                                                            gboolean   arg1,
                                                            gpointer   user_data)      : Run Last

The signal "focus-event" is emitted when an object gains or loses focus.

`atkobject` : | the object which received the signal.
`arg1` : | A boolean value which indicates whether the object gained or lost focus.
`user_data` : | user data set when the signal handler was connected.

### The `"property-change"` signal

    void                user_function                      (AtkObject *atkobject,
                                                            gpointer   arg1,
                                                            gpointer   user_data)      : Has Details

The signal "property-change" is emitted when an object's property value changes. The detail identifies the name of the property whose value has changed.

`atkobject` : | the object which received the signal.
`arg1` : | The new value of the property which changed.
`user_data` : | user data set when the signal handler was connected.

### The `"state-change"` signal

    void                user_function                      (AtkObject *atkobject,
                                                            gchar     *arg1,
                                                            gboolean   arg2,
                                                            gpointer   user_data)      : Has Details

The "state-change" signal is emitted when an object's state changes. The detail value identifies the state type which has changed.

`atkobject` : | the object which received the signal.
`arg1` : | The name of the state which has changed
`arg2` : | A boolean which indicates whether the state has been set or unset.
`user_data` : | user data set when the signal handler was connected.

### The `"visible-data-changed"` signal

    void                user_function                      (AtkObject *atkobject,
                                                            gpointer   user_data)      : Run Last

The "visible-data-changed" signal is emitted when the visual appearance of the object changed.

`atkobject` : | the object which received the signal.
`user_data` : | user data set when the signal handler was connected.

## See Also

See also: AtkObjectFactory, AtkRegistry. ( GTK+ users see also GtkAccessible).