Blame atk/atkobject.c

Packit d0bcc1
/* ATK -  Accessibility Toolkit
Packit d0bcc1
 * Copyright 2001 Sun Microsystems Inc.
Packit d0bcc1
 *
Packit d0bcc1
 * This library is free software; you can redistribute it and/or
Packit d0bcc1
 * modify it under the terms of the GNU Lesser General Public
Packit d0bcc1
 * License as published by the Free Software Foundation; either
Packit d0bcc1
 * version 2 of the License, or (at your option) any later version.
Packit d0bcc1
 *
Packit d0bcc1
 * This library is distributed in the hope that it will be useful,
Packit d0bcc1
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit d0bcc1
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit d0bcc1
 * Lesser General Public License for more details.
Packit d0bcc1
 *
Packit d0bcc1
 * You should have received a copy of the GNU Lesser General Public
Packit d0bcc1
 * License along with this library; if not, write to the
Packit d0bcc1
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Packit d0bcc1
 * Boston, MA 02111-1307, USA.
Packit d0bcc1
 */
Packit d0bcc1
Packit d0bcc1
#include "config.h"
Packit d0bcc1
Packit d0bcc1
#include <string.h>
Packit d0bcc1
#include <locale.h>
Packit d0bcc1
Packit d0bcc1
#include <glib-object.h>
Packit d0bcc1
#include <glib/gi18n-lib.h>
Packit d0bcc1
Packit d0bcc1
#include "atk.h"
Packit d0bcc1
#include "atkmarshal.h"
Packit d0bcc1
#include "atkprivate.h"
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * SECTION:atkobject
Packit d0bcc1
 * @Short_description: The base object class for the Accessibility Toolkit API.
Packit d0bcc1
 * @Title:AtkObject
Packit d0bcc1
 *
Packit d0bcc1
 * This class is the primary class for accessibility support via the
Packit d0bcc1
 * Accessibility ToolKit (ATK).  Objects which are instances of
Packit d0bcc1
 * #AtkObject (or instances of AtkObject-derived types) are queried
Packit d0bcc1
 * for properties which relate basic (and generic) properties of a UI
Packit d0bcc1
 * component such as name and description.  Instances of #AtkObject
Packit d0bcc1
 * may also be queried as to whether they implement other ATK
Packit d0bcc1
 * interfaces (e.g. #AtkAction, #AtkComponent, etc.), as appropriate
Packit d0bcc1
 * to the role which a given UI component plays in a user interface.
Packit d0bcc1
 *
Packit d0bcc1
 * All UI components in an application which provide useful
Packit d0bcc1
 * information or services to the user must provide corresponding
Packit d0bcc1
 * #AtkObject instances on request (in GTK+, for instance, usually on
Packit d0bcc1
 * a call to #gtk_widget_get_accessible ()), either via ATK support
Packit d0bcc1
 * built into the toolkit for the widget class or ancestor class, or
Packit d0bcc1
 * in the case of custom widgets, if the inherited #AtkObject
Packit d0bcc1
 * implementation is insufficient, via instances of a new #AtkObject
Packit d0bcc1
 * subclass.
Packit d0bcc1
 *
Packit d0bcc1
 * See also: #AtkObjectFactory, #AtkRegistry.  (GTK+ users see also
Packit d0bcc1
 * #GtkAccessible).
Packit d0bcc1
 *
Packit d0bcc1
 */
Packit d0bcc1
Packit d0bcc1
static GPtrArray *role_names = NULL;
Packit d0bcc1
Packit d0bcc1
enum
Packit d0bcc1
{
Packit d0bcc1
  PROP_0,  /* gobject convention */
Packit d0bcc1
Packit d0bcc1
  PROP_NAME,
Packit d0bcc1
  PROP_DESCRIPTION,
Packit d0bcc1
  PROP_PARENT,      /* ancestry has changed */
Packit d0bcc1
  PROP_VALUE,
Packit d0bcc1
  PROP_ROLE,
Packit d0bcc1
  PROP_LAYER,
Packit d0bcc1
  PROP_MDI_ZORDER,
Packit d0bcc1
  PROP_TABLE_CAPTION,
Packit d0bcc1
  PROP_TABLE_COLUMN_DESCRIPTION,
Packit d0bcc1
  PROP_TABLE_COLUMN_HEADER,
Packit d0bcc1
  PROP_TABLE_ROW_DESCRIPTION,
Packit d0bcc1
  PROP_TABLE_ROW_HEADER,
Packit d0bcc1
  PROP_TABLE_SUMMARY,
Packit d0bcc1
  PROP_TABLE_CAPTION_OBJECT,
Packit d0bcc1
  PROP_HYPERTEXT_NUM_LINKS,
Packit d0bcc1
  PROP_LAST         /* gobject convention */
Packit d0bcc1
};
Packit d0bcc1
Packit d0bcc1
enum {
Packit d0bcc1
  CHILDREN_CHANGED,
Packit d0bcc1
  FOCUS_EVENT,
Packit d0bcc1
  PROPERTY_CHANGE,
Packit d0bcc1
  STATE_CHANGE,
Packit d0bcc1
  VISIBLE_DATA_CHANGED,
Packit d0bcc1
  ACTIVE_DESCENDANT_CHANGED,
Packit d0bcc1
  
Packit d0bcc1
  LAST_SIGNAL
Packit d0bcc1
};
Packit d0bcc1
Packit d0bcc1
/* These are listed here for extraction by intltool */
Packit d0bcc1
#if 0
Packit d0bcc1
  N_("invalid")
Packit d0bcc1
  N_("accelerator label")
Packit d0bcc1
  N_("alert")
Packit d0bcc1
  N_("animation")
Packit d0bcc1
  N_("arrow")
Packit d0bcc1
  N_("calendar")
Packit d0bcc1
  N_("canvas")
Packit d0bcc1
  N_("check box")
Packit d0bcc1
  N_("check menu item")
Packit d0bcc1
  N_("color chooser")
Packit d0bcc1
  N_("column header")
Packit d0bcc1
  N_("combo box")
Packit d0bcc1
  N_("dateeditor")
Packit d0bcc1
  N_("desktop icon")
Packit d0bcc1
  N_("desktop frame")
Packit d0bcc1
  N_("dial")
Packit d0bcc1
  N_("dialog")
Packit d0bcc1
  N_("directory pane")
Packit d0bcc1
  N_("drawing area")
Packit d0bcc1
  N_("file chooser")
Packit d0bcc1
  N_("filler")
Packit d0bcc1
  /* I know it looks wrong but that is what Java returns */
Packit d0bcc1
  N_("fontchooser")
Packit d0bcc1
  N_("frame")
Packit d0bcc1
  N_("glass pane")
Packit d0bcc1
  N_("html container")
Packit d0bcc1
  N_("icon")
Packit d0bcc1
  N_("image")
Packit d0bcc1
  N_("internal frame")
Packit d0bcc1
  N_("label")
Packit d0bcc1
  N_("layered pane")
Packit d0bcc1
  N_("list")
Packit d0bcc1
  N_("list item")
Packit d0bcc1
  N_("menu")
Packit d0bcc1
  N_("menu bar")
Packit d0bcc1
  N_("menu item")
Packit d0bcc1
  N_("option pane")
Packit d0bcc1
  N_("page tab")
Packit d0bcc1
  N_("page tab list")
Packit d0bcc1
  N_("panel")
Packit d0bcc1
  N_("password text")
Packit d0bcc1
  N_("popup menu")
Packit d0bcc1
  N_("progress bar")
Packit d0bcc1
  N_("push button")
Packit d0bcc1
  N_("radio button")
Packit d0bcc1
  N_("radio menu item")
Packit d0bcc1
  N_("root pane")
Packit d0bcc1
  N_("row header")
Packit d0bcc1
  N_("scroll bar")
Packit d0bcc1
  N_("scroll pane")
Packit d0bcc1
  N_("separator")
Packit d0bcc1
  N_("slider")
Packit d0bcc1
  N_("split pane")
Packit d0bcc1
  N_("spin button")
Packit d0bcc1
  N_("statusbar")
Packit d0bcc1
  N_("table")
Packit d0bcc1
  N_("table cell")
Packit d0bcc1
  N_("table column header")
Packit d0bcc1
  N_("table row header")
Packit d0bcc1
  N_("tear off menu item")
Packit d0bcc1
  N_("terminal")
Packit d0bcc1
  N_("text")
Packit d0bcc1
  N_("toggle button")
Packit d0bcc1
  N_("tool bar")
Packit d0bcc1
  N_("tool tip")
Packit d0bcc1
  N_("tree")
Packit d0bcc1
  N_("tree table")
Packit d0bcc1
  N_("unknown")
Packit d0bcc1
  N_("viewport")
Packit d0bcc1
  N_("window")
Packit d0bcc1
  N_("header")
Packit d0bcc1
  N_("footer")
Packit d0bcc1
  N_("paragraph")
Packit d0bcc1
  N_("ruler")
Packit d0bcc1
  N_("application")
Packit d0bcc1
  N_("autocomplete")
Packit d0bcc1
  N_("edit bar")
Packit d0bcc1
  N_("embedded component")
Packit d0bcc1
  N_("entry")
Packit d0bcc1
  N_("chart")
Packit d0bcc1
  N_("caption")
Packit d0bcc1
  N_("document frame")
Packit d0bcc1
  N_("heading")
Packit d0bcc1
  N_("page")
Packit d0bcc1
  N_("section")
Packit d0bcc1
  N_("redundant object")
Packit d0bcc1
  N_("form")
Packit d0bcc1
  N_("link")
Packit d0bcc1
  N_("input method window")
Packit d0bcc1
  N_("table row")
Packit d0bcc1
  N_("tree item")
Packit d0bcc1
  N_("document spreadsheet")
Packit d0bcc1
  N_("document presentation")
Packit d0bcc1
  N_("document text")
Packit d0bcc1
  N_("document web")
Packit d0bcc1
  N_("document email")
Packit d0bcc1
  N_("comment")
Packit d0bcc1
  N_("list box")
Packit d0bcc1
  N_("grouping")
Packit d0bcc1
  N_("image map")
Packit d0bcc1
  N_("notification")
Packit d0bcc1
  N_("info bar")
Packit d0bcc1
  N_("level bar")
Packit d0bcc1
  N_("title bar")
Packit d0bcc1
  N_("block quote")
Packit d0bcc1
  N_("audio")
Packit d0bcc1
  N_("video")
Packit d0bcc1
  N_("definition")
Packit d0bcc1
  N_("article")
Packit d0bcc1
  N_("landmark")
Packit d0bcc1
  N_("log")
Packit d0bcc1
  N_("marquee")
Packit d0bcc1
  N_("math")
Packit d0bcc1
  N_("rating")
Packit d0bcc1
  N_("timer")
Packit d0bcc1
  N_("description list")
Packit d0bcc1
  N_("description term")
Packit d0bcc1
  N_("description value")
Packit d0bcc1
#endif /* 0 */
Packit d0bcc1
Packit d0bcc1
static void            atk_object_class_init        (AtkObjectClass  *klass);
Packit d0bcc1
static void            atk_object_init              (AtkObject       *accessible,
Packit d0bcc1
                                                     AtkObjectClass  *klass);
Packit d0bcc1
static AtkRelationSet* atk_object_real_ref_relation_set 
Packit d0bcc1
                                                    (AtkObject       *accessible);
Packit d0bcc1
static void            atk_object_real_initialize   (AtkObject       *accessible,
Packit d0bcc1
                                                     gpointer        data);
Packit d0bcc1
static void            atk_object_real_set_property (GObject         *object,
Packit d0bcc1
                                                     guint            prop_id,
Packit d0bcc1
                                                     const GValue    *value,
Packit d0bcc1
                                                     GParamSpec      *pspec);
Packit d0bcc1
static void            atk_object_real_get_property (GObject         *object,
Packit d0bcc1
                                                     guint            prop_id,
Packit d0bcc1
                                                     GValue          *value,
Packit d0bcc1
                                                     GParamSpec      *pspec);
Packit d0bcc1
static void            atk_object_finalize          (GObject         *object);
Packit d0bcc1
static const gchar*    atk_object_real_get_name     (AtkObject       *object);
Packit d0bcc1
static const gchar*    atk_object_real_get_description
Packit d0bcc1
                                                   (AtkObject       *object);
Packit d0bcc1
static AtkObject*      atk_object_real_get_parent  (AtkObject       *object);
Packit d0bcc1
static AtkRole         atk_object_real_get_role    (AtkObject       *object);
Packit d0bcc1
static AtkLayer        atk_object_real_get_layer   (AtkObject       *object);
Packit d0bcc1
static AtkStateSet*    atk_object_real_ref_state_set
Packit d0bcc1
                                                   (AtkObject       *object);
Packit d0bcc1
static void            atk_object_real_set_name    (AtkObject       *object,
Packit d0bcc1
                                                    const gchar     *name);
Packit d0bcc1
static void            atk_object_real_set_description
Packit d0bcc1
                                                   (AtkObject       *object,
Packit d0bcc1
                                                    const gchar     *description);
Packit d0bcc1
static void            atk_object_real_set_parent  (AtkObject       *object,
Packit d0bcc1
                                                    AtkObject       *parent);
Packit d0bcc1
static void            atk_object_real_set_role    (AtkObject       *object,
Packit d0bcc1
                                                    AtkRole         role);
Packit d0bcc1
static void            atk_object_notify           (GObject         *obj,
Packit d0bcc1
                                                    GParamSpec      *pspec);
Packit d0bcc1
static const gchar*    atk_object_real_get_object_locale
Packit d0bcc1
                                                   (AtkObject       *object);
Packit d0bcc1
Packit d0bcc1
static guint atk_object_signals[LAST_SIGNAL] = { 0, };
Packit d0bcc1
Packit d0bcc1
static gpointer parent_class = NULL;
Packit d0bcc1
Packit d0bcc1
static const gchar* const atk_object_name_property_name = "accessible-name";
Packit d0bcc1
static const gchar* const atk_object_name_property_description = "accessible-description";
Packit d0bcc1
static const gchar* const atk_object_name_property_parent = "accessible-parent";
Packit d0bcc1
static const gchar* const atk_object_name_property_value = "accessible-value";
Packit d0bcc1
static const gchar* const atk_object_name_property_role = "accessible-role";
Packit d0bcc1
static const gchar* const atk_object_name_property_component_layer = "accessible-component-layer";
Packit d0bcc1
static const gchar* const atk_object_name_property_component_mdi_zorder = "accessible-component-mdi-zorder";
Packit d0bcc1
static const gchar* const atk_object_name_property_table_caption = "accessible-table-caption";
Packit d0bcc1
static const gchar* const atk_object_name_property_table_column_description = "accessible-table-column-description";
Packit d0bcc1
static const gchar* const atk_object_name_property_table_column_header = "accessible-table-column-header";
Packit d0bcc1
static const gchar* const atk_object_name_property_table_row_description = "accessible-table-row-description";
Packit d0bcc1
static const gchar* const atk_object_name_property_table_row_header = "accessible-table-row-header";
Packit d0bcc1
static const gchar* const atk_object_name_property_table_summary = "accessible-table-summary";
Packit d0bcc1
static const gchar* const atk_object_name_property_table_caption_object = "accessible-table-caption-object";
Packit d0bcc1
static const gchar* const atk_object_name_property_hypertext_num_links = "accessible-hypertext-nlinks";
Packit d0bcc1
Packit d0bcc1
static void
Packit d0bcc1
initialize_role_names ()
Packit d0bcc1
{
Packit d0bcc1
  GTypeClass *enum_class;
Packit d0bcc1
  GEnumValue *enum_value;
Packit d0bcc1
  int i;
Packit d0bcc1
  gchar *role_name = NULL;
Packit d0bcc1
Packit d0bcc1
  if (role_names)
Packit d0bcc1
    return;
Packit d0bcc1
Packit d0bcc1
  role_names = g_ptr_array_new ();
Packit d0bcc1
  enum_class = g_type_class_ref (ATK_TYPE_ROLE);
Packit d0bcc1
  if (!G_IS_ENUM_CLASS(enum_class))
Packit d0bcc1
    return;
Packit d0bcc1
Packit d0bcc1
  for (i = 0; i < ATK_ROLE_LAST_DEFINED; i++)
Packit d0bcc1
    {
Packit d0bcc1
      enum_value = g_enum_get_value (G_ENUM_CLASS (enum_class), i);
Packit d0bcc1
      role_name = g_strdup (enum_value->value_nick);
Packit d0bcc1
      // We want the role names to be in the format "check button" and not "check-button"
Packit d0bcc1
      _compact_name (role_name);
Packit d0bcc1
      g_ptr_array_add (role_names, role_name);
Packit d0bcc1
    }
Packit d0bcc1
Packit d0bcc1
  g_type_class_unref (enum_class);
Packit d0bcc1
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
GType
Packit d0bcc1
atk_object_get_type (void)
Packit d0bcc1
{
Packit d0bcc1
  static GType type = 0;
Packit d0bcc1
Packit d0bcc1
  if (!type)
Packit d0bcc1
    {
Packit d0bcc1
      static const GTypeInfo typeInfo =
Packit d0bcc1
      {
Packit d0bcc1
        sizeof (AtkObjectClass),
Packit d0bcc1
        (GBaseInitFunc) NULL,
Packit d0bcc1
        (GBaseFinalizeFunc) NULL,
Packit d0bcc1
        (GClassInitFunc) atk_object_class_init,
Packit d0bcc1
        (GClassFinalizeFunc) NULL,
Packit d0bcc1
        NULL,
Packit d0bcc1
        sizeof (AtkObject),
Packit d0bcc1
        0,
Packit d0bcc1
        (GInstanceInitFunc) atk_object_init,
Packit d0bcc1
      } ;
Packit d0bcc1
      type = g_type_register_static (G_TYPE_OBJECT, "AtkObject", &typeInfo, 0) ;
Packit d0bcc1
    }
Packit d0bcc1
  return type;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
static void
Packit d0bcc1
atk_object_class_init (AtkObjectClass *klass)
Packit d0bcc1
{
Packit d0bcc1
  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
Packit d0bcc1
Packit d0bcc1
  parent_class = g_type_class_peek_parent (klass);
Packit d0bcc1
Packit d0bcc1
  gobject_class->set_property = atk_object_real_set_property;
Packit d0bcc1
  gobject_class->get_property = atk_object_real_get_property;
Packit d0bcc1
  gobject_class->finalize = atk_object_finalize;
Packit d0bcc1
  gobject_class->notify = atk_object_notify;
Packit d0bcc1
Packit d0bcc1
  klass->get_name = atk_object_real_get_name;
Packit d0bcc1
  klass->get_description = atk_object_real_get_description;
Packit d0bcc1
  klass->get_parent = atk_object_real_get_parent;
Packit d0bcc1
  klass->get_n_children = NULL;
Packit d0bcc1
  klass->ref_child = NULL;
Packit d0bcc1
  klass->get_index_in_parent = NULL;
Packit d0bcc1
  klass->ref_relation_set = atk_object_real_ref_relation_set;
Packit d0bcc1
  klass->get_role = atk_object_real_get_role;
Packit d0bcc1
  klass->get_layer = atk_object_real_get_layer;
Packit d0bcc1
  klass->get_mdi_zorder = NULL;
Packit d0bcc1
  klass->initialize = atk_object_real_initialize;
Packit d0bcc1
  klass->ref_state_set = atk_object_real_ref_state_set;
Packit d0bcc1
  klass->set_name = atk_object_real_set_name;
Packit d0bcc1
  klass->set_description = atk_object_real_set_description;
Packit d0bcc1
  klass->set_parent = atk_object_real_set_parent;
Packit d0bcc1
  klass->set_role = atk_object_real_set_role;
Packit d0bcc1
  klass->get_object_locale = atk_object_real_get_object_locale;
Packit d0bcc1
Packit d0bcc1
  /*
Packit d0bcc1
   * We do not define default signal handlers here
Packit d0bcc1
   */
Packit d0bcc1
  klass->children_changed = NULL;
Packit d0bcc1
  klass->focus_event = NULL;
Packit d0bcc1
  klass->property_change = NULL;
Packit d0bcc1
  klass->visible_data_changed = NULL;
Packit d0bcc1
  klass->active_descendant_changed = NULL;
Packit d0bcc1
Packit d0bcc1
  _gettext_initialization ();
Packit d0bcc1
Packit d0bcc1
  g_object_class_install_property (gobject_class,
Packit d0bcc1
                                   PROP_NAME,
Packit d0bcc1
                                   g_param_spec_string (atk_object_name_property_name,
Packit d0bcc1
                                                        _("Accessible Name"),
Packit d0bcc1
                                                        _("Object instance’s name formatted for assistive technology access"),
Packit d0bcc1
                                                        NULL,
Packit d0bcc1
                                                        G_PARAM_READWRITE));
Packit d0bcc1
  g_object_class_install_property (gobject_class,
Packit d0bcc1
                                   PROP_DESCRIPTION,
Packit d0bcc1
                                   g_param_spec_string (atk_object_name_property_description,
Packit d0bcc1
                                                        _("Accessible Description"),
Packit d0bcc1
                                                        _("Description of an object, formatted for assistive technology access"),
Packit d0bcc1
                                                        NULL,
Packit d0bcc1
                                                        G_PARAM_READWRITE));
Packit d0bcc1
  g_object_class_install_property (gobject_class,
Packit d0bcc1
                                   PROP_PARENT,
Packit d0bcc1
                                   g_param_spec_object (atk_object_name_property_parent,
Packit d0bcc1
                                                        _("Accessible Parent"),
Packit d0bcc1
                                                        _("Parent of the current accessible as returned by atk_object_get_parent()"),
Packit d0bcc1
                                                        ATK_TYPE_OBJECT,
Packit d0bcc1
                                                        G_PARAM_READWRITE));
Packit d0bcc1
Packit d0bcc1
  /**
Packit d0bcc1
   * AtkObject:accessible-value:
Packit d0bcc1
   *
Packit d0bcc1
   * Numeric value of this object, in case being and AtkValue.
Packit d0bcc1
   *
Packit d0bcc1
   * Deprecated: Since 2.12. Use atk_value_get_value_and_text() to get
Packit d0bcc1
   * the value, and value-changed signal to be notified on their value
Packit d0bcc1
   * changes.
Packit d0bcc1
   */
Packit d0bcc1
  g_object_class_install_property (gobject_class,
Packit d0bcc1
                                   PROP_VALUE,
Packit d0bcc1
                                   g_param_spec_double (atk_object_name_property_value,
Packit d0bcc1
                                                        _("Accessible Value"),
Packit d0bcc1
                                                        _("Is used to notify that the value has changed"),
Packit d0bcc1
                                                        0.0,
Packit d0bcc1
                                                        G_MAXDOUBLE,
Packit d0bcc1
                                                        0.0,
Packit d0bcc1
                                                        G_PARAM_READWRITE));
Packit d0bcc1
  g_object_class_install_property (gobject_class,
Packit d0bcc1
                                   PROP_ROLE,
Packit d0bcc1
                                   g_param_spec_int    (atk_object_name_property_role,
Packit d0bcc1
                                                        _("Accessible Role"),
Packit d0bcc1
                                                        _("The accessible role of this object"),
Packit d0bcc1
                                                        0,
Packit d0bcc1
                                                        G_MAXINT,
Packit d0bcc1
                                                        ATK_ROLE_UNKNOWN,
Packit d0bcc1
                                                        G_PARAM_READWRITE));
Packit d0bcc1
  g_object_class_install_property (gobject_class,
Packit d0bcc1
                                   PROP_LAYER,
Packit d0bcc1
                                   g_param_spec_int    (atk_object_name_property_component_layer,
Packit d0bcc1
                                                        _("Accessible Layer"),
Packit d0bcc1
                                                        _("The accessible layer of this object"),
Packit d0bcc1
                                                        0,
Packit d0bcc1
                                                        G_MAXINT,
Packit d0bcc1
                                                        0,
Packit d0bcc1
                                                        G_PARAM_READABLE));
Packit d0bcc1
  g_object_class_install_property (gobject_class,
Packit d0bcc1
                                   PROP_MDI_ZORDER,
Packit d0bcc1
                                   g_param_spec_int    (atk_object_name_property_component_mdi_zorder,
Packit d0bcc1
                                                        _("Accessible MDI Value"),
Packit d0bcc1
                                                        _("The accessible MDI value of this object"),
Packit d0bcc1
                                                        G_MININT,
Packit d0bcc1
                                                        G_MAXINT,
Packit d0bcc1
                                                        G_MININT,
Packit d0bcc1
                                                        G_PARAM_READABLE));
Packit d0bcc1
Packit d0bcc1
  /**
Packit d0bcc1
   * AtkObject:accessible-table-caption:
Packit d0bcc1
   *
Packit d0bcc1
   * Table caption.
Packit d0bcc1
   *
Packit d0bcc1
   * Deprecated: Since 1.3. Use table-caption-object instead.
Packit d0bcc1
   */
Packit d0bcc1
  g_object_class_install_property (gobject_class,
Packit d0bcc1
                                   PROP_TABLE_CAPTION,
Packit d0bcc1
                                   g_param_spec_string (atk_object_name_property_table_caption,
Packit d0bcc1
                                                        _("Accessible Table Caption"),
Packit d0bcc1
                                                        _("Is used to notify that the table caption has changed; this property should not be used. accessible-table-caption-object should be used instead"),
Packit d0bcc1
                                                        NULL,
Packit d0bcc1
                                                        G_PARAM_READWRITE));
Packit d0bcc1
  /**
Packit d0bcc1
   * AtkObject:accessible-table-column-header:
Packit d0bcc1
   *
Packit d0bcc1
   * Accessible table column header.
Packit d0bcc1
   *
Packit d0bcc1
   * Deprecated: Since 2.12. Use atk_table_get_column_header() and
Packit d0bcc1
   * atk_table_set_column_header() instead.
Packit d0bcc1
   */
Packit d0bcc1
  g_object_class_install_property (gobject_class,
Packit d0bcc1
                                   PROP_TABLE_COLUMN_HEADER,
Packit d0bcc1
                                   g_param_spec_object (atk_object_name_property_table_column_header,
Packit d0bcc1
                                                        _("Accessible Table Column Header"),
Packit d0bcc1
                                                        _("Is used to notify that the table column header has changed"),
Packit d0bcc1
                                                        ATK_TYPE_OBJECT,
Packit d0bcc1
                                                        G_PARAM_READWRITE));
Packit d0bcc1
Packit d0bcc1
  /**
Packit d0bcc1
   * AtkObject:accessible-table-column-description:
Packit d0bcc1
   *
Packit d0bcc1
   * Accessible table column description.
Packit d0bcc1
   *
Packit d0bcc1
   * Deprecated: Since 2.12. Use atk_table_get_column_description()
Packit d0bcc1
   * and atk_table_set_column_description() instead.
Packit d0bcc1
   */
Packit d0bcc1
  g_object_class_install_property (gobject_class,
Packit d0bcc1
                                   PROP_TABLE_COLUMN_DESCRIPTION,
Packit d0bcc1
                                   g_param_spec_string (atk_object_name_property_table_column_description,
Packit d0bcc1
                                                        _("Accessible Table Column Description"),
Packit d0bcc1
                                                        _("Is used to notify that the table column description has changed"),
Packit d0bcc1
                                                        NULL,
Packit d0bcc1
                                                        G_PARAM_READWRITE));
Packit d0bcc1
Packit d0bcc1
  /**
Packit d0bcc1
   * AtkObject:accessible-table-row-header:
Packit d0bcc1
   *
Packit d0bcc1
   * Accessible table row header.
Packit d0bcc1
   *
Packit d0bcc1
   * Deprecated: Since 2.12. Use atk_table_get_row_header() and
Packit d0bcc1
   * atk_table_set_row_header() instead.
Packit d0bcc1
   */
Packit d0bcc1
  g_object_class_install_property (gobject_class,
Packit d0bcc1
                                   PROP_TABLE_ROW_HEADER,
Packit d0bcc1
                                   g_param_spec_object (atk_object_name_property_table_row_header,
Packit d0bcc1
                                                        _("Accessible Table Row Header"),
Packit d0bcc1
                                                        _("Is used to notify that the table row header has changed"),
Packit d0bcc1
                                                        ATK_TYPE_OBJECT,
Packit d0bcc1
                                                        G_PARAM_READWRITE));
Packit d0bcc1
  /**
Packit d0bcc1
   * AtkObject:accessible-table-row-description:
Packit d0bcc1
   *
Packit d0bcc1
   * Accessible table row description.
Packit d0bcc1
   *
Packit d0bcc1
   * Deprecated: Since 2.12. Use atk_table_get_row_description() and
Packit d0bcc1
   * atk_table_set_row_description() instead.
Packit d0bcc1
   */
Packit d0bcc1
  g_object_class_install_property (gobject_class,
Packit d0bcc1
                                   PROP_TABLE_ROW_DESCRIPTION,
Packit d0bcc1
                                   g_param_spec_string (atk_object_name_property_table_row_description,
Packit d0bcc1
                                                        _("Accessible Table Row Description"),
Packit d0bcc1
                                                        _("Is used to notify that the table row description has changed"),
Packit d0bcc1
                                                        NULL,
Packit d0bcc1
                                                        G_PARAM_READWRITE));
Packit d0bcc1
  g_object_class_install_property (gobject_class,
Packit d0bcc1
                                   PROP_TABLE_SUMMARY,
Packit d0bcc1
                                   g_param_spec_object (atk_object_name_property_table_summary,
Packit d0bcc1
                                                        _("Accessible Table Summary"),
Packit d0bcc1
                                                        _("Is used to notify that the table summary has changed"),
Packit d0bcc1
                                                        ATK_TYPE_OBJECT,
Packit d0bcc1
                                                        G_PARAM_READWRITE));
Packit d0bcc1
  g_object_class_install_property (gobject_class,
Packit d0bcc1
                                   PROP_TABLE_CAPTION_OBJECT,
Packit d0bcc1
                                   g_param_spec_object (atk_object_name_property_table_caption_object,
Packit d0bcc1
                                                        _("Accessible Table Caption Object"),
Packit d0bcc1
                                                        _("Is used to notify that the table caption has changed"),
Packit d0bcc1
                                                        ATK_TYPE_OBJECT,
Packit d0bcc1
                                                        G_PARAM_READWRITE));
Packit d0bcc1
  g_object_class_install_property (gobject_class,
Packit d0bcc1
                                   PROP_HYPERTEXT_NUM_LINKS,
Packit d0bcc1
                                   g_param_spec_int    (atk_object_name_property_hypertext_num_links,
Packit d0bcc1
                                                        _("Number of Accessible Hypertext Links"),
Packit d0bcc1
                                                        _("The number of links which the current AtkHypertext has"),
Packit d0bcc1
                                                        0,
Packit d0bcc1
                                                        G_MAXINT,
Packit d0bcc1
                                                        0,
Packit d0bcc1
                                                        G_PARAM_READABLE));
Packit d0bcc1
Packit d0bcc1
  /**
Packit d0bcc1
   * AtkObject::children-changed:
Packit d0bcc1
   * @atkobject: the object which received the signal.
Packit d0bcc1
   * @arg1: The index of the added or removed child. The value can be
Packit d0bcc1
   * -1. This is used if the value is not known by the implementor
Packit d0bcc1
   * when the child is added/removed or irrelevant.
Packit d0bcc1
   * @arg2: A gpointer to the child AtkObject which was added or
Packit d0bcc1
   * removed. If the child was removed, it is possible that it is not
Packit d0bcc1
   * available for the implementor. In that case this pointer can be
Packit d0bcc1
   * NULL.
Packit d0bcc1
   *
Packit d0bcc1
   * The signal "children-changed" is emitted when a child is added or
Packit d0bcc1
   * removed form an object. It supports two details: "add" and
Packit d0bcc1
   * "remove"
Packit d0bcc1
   */
Packit d0bcc1
  atk_object_signals[CHILDREN_CHANGED] =
Packit d0bcc1
    g_signal_new ("children_changed",
Packit d0bcc1
		  G_TYPE_FROM_CLASS (klass),
Packit d0bcc1
		  G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
Packit d0bcc1
		  G_STRUCT_OFFSET (AtkObjectClass, children_changed),
Packit d0bcc1
		  NULL, NULL,
Packit d0bcc1
		  g_cclosure_marshal_VOID__UINT_POINTER,
Packit d0bcc1
		  G_TYPE_NONE,
Packit d0bcc1
		  2, G_TYPE_UINT, G_TYPE_POINTER);
Packit d0bcc1
Packit d0bcc1
  /**
Packit d0bcc1
   * AtkObject::focus-event:
Packit d0bcc1
   * @atkobject: the object which received the signal
Packit d0bcc1
   * @arg1: a boolean value which indicates whether the object gained
Packit d0bcc1
   * or lost focus.
Packit d0bcc1
   *
Packit d0bcc1
   * The signal "focus-event" is emitted when an object gained or lost
Packit d0bcc1
   * focus.
Packit d0bcc1
   *
Packit d0bcc1
   * Deprecated: 2.9.4: Use the #AtkObject::state-change signal instead.
Packit d0bcc1
   */
Packit d0bcc1
  atk_object_signals[FOCUS_EVENT] =
Packit d0bcc1
    g_signal_new ("focus_event",
Packit d0bcc1
		  G_TYPE_FROM_CLASS (klass),
Packit d0bcc1
		  G_SIGNAL_RUN_LAST,
Packit d0bcc1
		  G_STRUCT_OFFSET (AtkObjectClass, focus_event), 
Packit d0bcc1
		  NULL, NULL,
Packit d0bcc1
		  g_cclosure_marshal_VOID__BOOLEAN,
Packit d0bcc1
		  G_TYPE_NONE,
Packit d0bcc1
		  1, G_TYPE_BOOLEAN);
Packit d0bcc1
  /**
Packit d0bcc1
   * AtkObject::property-change:
Packit d0bcc1
   * @atkobject: the object which received the signal.
Packit d0bcc1
   * @arg1: an #AtkPropertyValues containing the new value of the
Packit d0bcc1
   *   property which changed.
Packit d0bcc1
   *
Packit d0bcc1
   * The signal "property-change" is emitted when an object's property
Packit d0bcc1
   * value changes. @arg1 contains an #AtkPropertyValues with the name
Packit d0bcc1
   * and the new value of the property whose value has changed. Note
Packit d0bcc1
   * that, as with GObject notify, getting this signal does not
Packit d0bcc1
   * guarantee that the value of the property has actually changed; it
Packit d0bcc1
   * may also be emitted when the setter of the property is called to
Packit d0bcc1
   * reinstate the previous value.
Packit d0bcc1
   *
Packit d0bcc1
   * Toolkit implementor note: ATK implementors should use
Packit d0bcc1
   * g_object_notify() to emit property-changed
Packit d0bcc1
   * notifications. #AtkObject::property-changed is needed by the
Packit d0bcc1
   * implementation of atk_add_global_event_listener() because GObject
Packit d0bcc1
   * notify doesn't support emission hooks.
Packit d0bcc1
   */
Packit d0bcc1
  atk_object_signals[PROPERTY_CHANGE] =
Packit d0bcc1
    g_signal_new ("property_change",
Packit d0bcc1
                  G_TYPE_FROM_CLASS (klass),
Packit d0bcc1
                  G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
Packit d0bcc1
                  G_STRUCT_OFFSET (AtkObjectClass, property_change),
Packit d0bcc1
                  (GSignalAccumulator) NULL, NULL,
Packit d0bcc1
                  g_cclosure_marshal_VOID__POINTER,
Packit d0bcc1
                  G_TYPE_NONE, 1,
Packit d0bcc1
                  G_TYPE_POINTER);
Packit d0bcc1
Packit d0bcc1
  /**
Packit d0bcc1
   * AtkObject::state-change:
Packit d0bcc1
   * @atkobject: the object which received the signal.
Packit d0bcc1
   * @arg1: The name of the state which has changed
Packit d0bcc1
   * @arg2: A boolean which indicates whether the state has been set or unset.
Packit d0bcc1
   *
Packit d0bcc1
   * The "state-change" signal is emitted when an object's state
Packit d0bcc1
   * changes.  The detail value identifies the state type which has
Packit d0bcc1
   * changed.
Packit d0bcc1
   */
Packit d0bcc1
  atk_object_signals[STATE_CHANGE] =
Packit d0bcc1
    g_signal_new ("state_change",
Packit d0bcc1
                  G_TYPE_FROM_CLASS (klass),
Packit d0bcc1
                  G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
Packit d0bcc1
                  G_STRUCT_OFFSET (AtkObjectClass, state_change),
Packit d0bcc1
                  (GSignalAccumulator) NULL, NULL,
Packit d0bcc1
                  atk_marshal_VOID__STRING_BOOLEAN,
Packit d0bcc1
                  G_TYPE_NONE, 2,
Packit d0bcc1
                  G_TYPE_STRING,
Packit d0bcc1
                  G_TYPE_BOOLEAN);
Packit d0bcc1
Packit d0bcc1
  /**
Packit d0bcc1
   * AtkObject::visible-data-changed:
Packit d0bcc1
   * @atkobject: the object which received the signal.
Packit d0bcc1
   *
Packit d0bcc1
   * The "visible-data-changed" signal is emitted when the visual
Packit d0bcc1
   * appearance of the object changed.
Packit d0bcc1
   */
Packit d0bcc1
  atk_object_signals[VISIBLE_DATA_CHANGED] =
Packit d0bcc1
    g_signal_new ("visible_data_changed",
Packit d0bcc1
                  G_TYPE_FROM_CLASS (klass),
Packit d0bcc1
                  G_SIGNAL_RUN_LAST,
Packit d0bcc1
                  G_STRUCT_OFFSET (AtkObjectClass, visible_data_changed),
Packit d0bcc1
                  (GSignalAccumulator) NULL, NULL,
Packit d0bcc1
                  g_cclosure_marshal_VOID__VOID,
Packit d0bcc1
                  G_TYPE_NONE, 0);
Packit d0bcc1
Packit d0bcc1
  /**
Packit d0bcc1
   * AtkObject::active-descendant-changed:
Packit d0bcc1
   * @atkobject: the object which received the signal.
Packit d0bcc1
   * @arg1: the newly focused object.
Packit d0bcc1
   *
Packit d0bcc1
   * The "active-descendant-changed" signal is emitted by an object
Packit d0bcc1
   * which has the state ATK_STATE_MANAGES_DESCENDANTS when the focus
Packit d0bcc1
   * object in the object changes. For instance, a table will emit the
Packit d0bcc1
   * signal when the cell in the table which has focus changes.
Packit d0bcc1
   */
Packit d0bcc1
  atk_object_signals[ACTIVE_DESCENDANT_CHANGED] =
Packit d0bcc1
    g_signal_new ("active_descendant_changed",
Packit d0bcc1
		  G_TYPE_FROM_CLASS (klass),
Packit d0bcc1
		  G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
Packit d0bcc1
		  G_STRUCT_OFFSET (AtkObjectClass, active_descendant_changed),
Packit d0bcc1
		  NULL, NULL,
Packit d0bcc1
		  g_cclosure_marshal_VOID__POINTER,
Packit d0bcc1
		  G_TYPE_NONE,
Packit d0bcc1
		  1, G_TYPE_POINTER);
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
static void
Packit d0bcc1
atk_object_init  (AtkObject        *accessible,
Packit d0bcc1
                  AtkObjectClass   *klass)
Packit d0bcc1
{
Packit d0bcc1
  accessible->name = NULL;
Packit d0bcc1
  accessible->description = NULL;
Packit d0bcc1
  accessible->accessible_parent = NULL;
Packit d0bcc1
  accessible->relation_set = atk_relation_set_new();
Packit d0bcc1
  accessible->role = ATK_ROLE_UNKNOWN;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
GType
Packit d0bcc1
atk_implementor_get_type (void)
Packit d0bcc1
{
Packit d0bcc1
  static GType type = 0;
Packit d0bcc1
Packit d0bcc1
  if (!type)
Packit d0bcc1
    {
Packit d0bcc1
      static const GTypeInfo typeInfo =
Packit d0bcc1
      {
Packit d0bcc1
        sizeof (AtkImplementorIface),
Packit d0bcc1
        (GBaseInitFunc) NULL,
Packit d0bcc1
        (GBaseFinalizeFunc) NULL,
Packit d0bcc1
      } ;
Packit d0bcc1
Packit d0bcc1
      type = g_type_register_static (G_TYPE_INTERFACE, "AtkImplementorIface", &typeInfo, 0) ;
Packit d0bcc1
    }
Packit d0bcc1
Packit d0bcc1
  return type;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_get_name:
Packit d0bcc1
 * @accessible: an #AtkObject
Packit d0bcc1
 *
Packit d0bcc1
 * Gets the accessible name of the accessible.
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: a character string representing the accessible name of the object.
Packit d0bcc1
 **/
Packit d0bcc1
const gchar*
Packit d0bcc1
atk_object_get_name (AtkObject *accessible)
Packit d0bcc1
{
Packit d0bcc1
  AtkObjectClass *klass;
Packit d0bcc1
Packit d0bcc1
  g_return_val_if_fail (ATK_IS_OBJECT (accessible), NULL);
Packit d0bcc1
Packit d0bcc1
  klass = ATK_OBJECT_GET_CLASS (accessible);
Packit d0bcc1
  if (klass->get_name)
Packit d0bcc1
    return (klass->get_name) (accessible);
Packit d0bcc1
  else
Packit d0bcc1
    return NULL;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_get_description:
Packit d0bcc1
 * @accessible: an #AtkObject
Packit d0bcc1
 *
Packit d0bcc1
 * Gets the accessible description of the accessible.
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: a character string representing the accessible description
Packit d0bcc1
 * of the accessible.
Packit d0bcc1
 *
Packit d0bcc1
 **/
Packit d0bcc1
const gchar*
Packit d0bcc1
atk_object_get_description (AtkObject *accessible)
Packit d0bcc1
{
Packit d0bcc1
  AtkObjectClass *klass;
Packit d0bcc1
Packit d0bcc1
  g_return_val_if_fail (ATK_IS_OBJECT (accessible), NULL);
Packit d0bcc1
Packit d0bcc1
  klass = ATK_OBJECT_GET_CLASS (accessible);
Packit d0bcc1
  if (klass->get_description)
Packit d0bcc1
    return (klass->get_description) (accessible);
Packit d0bcc1
  else
Packit d0bcc1
    return NULL;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_get_parent:
Packit d0bcc1
 * @accessible: an #AtkObject
Packit d0bcc1
 *
Packit d0bcc1
 * Gets the accessible parent of the accessible. By default this is
Packit d0bcc1
 * the one assigned with atk_object_set_parent(), but it is assumed
Packit d0bcc1
 * that ATK implementors have ways to get the parent of the object
Packit d0bcc1
 * without the need of assigning it manually with
Packit d0bcc1
 * atk_object_set_parent(), and will return it with this method.
Packit d0bcc1
 *
Packit d0bcc1
 * If you are only interested on the parent assigned with
Packit d0bcc1
 * atk_object_set_parent(), use atk_object_peek_parent().
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: (transfer none): an #AtkObject representing the accessible
Packit d0bcc1
 * parent of the accessible
Packit d0bcc1
 **/
Packit d0bcc1
AtkObject*
Packit d0bcc1
atk_object_get_parent (AtkObject *accessible)
Packit d0bcc1
{
Packit d0bcc1
  AtkObjectClass *klass;
Packit d0bcc1
Packit d0bcc1
  g_return_val_if_fail (ATK_IS_OBJECT (accessible), NULL);
Packit d0bcc1
Packit d0bcc1
  klass = ATK_OBJECT_GET_CLASS (accessible);
Packit d0bcc1
  if (klass->get_parent)
Packit d0bcc1
    return (klass->get_parent) (accessible);
Packit d0bcc1
  else
Packit d0bcc1
    return NULL;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_peek_parent:
Packit d0bcc1
 * @accessible: an #AtkObject
Packit d0bcc1
 *
Packit d0bcc1
 * Gets the accessible parent of the accessible, if it has been
Packit d0bcc1
 * manually assigned with atk_object_set_parent. Otherwise, this
Packit d0bcc1
 * function returns %NULL.
Packit d0bcc1
 *
Packit d0bcc1
 * This method is intended as an utility for ATK implementors, and not
Packit d0bcc1
 * to be exposed to accessible tools. See atk_object_get_parent() for
Packit d0bcc1
 * further reference.
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: (transfer none): an #AtkObject representing the accessible
Packit d0bcc1
 * parent of the accessible if assigned
Packit d0bcc1
 **/
Packit d0bcc1
AtkObject*
Packit d0bcc1
atk_object_peek_parent (AtkObject *accessible)
Packit d0bcc1
{
Packit d0bcc1
  return accessible->accessible_parent;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_get_n_accessible_children:
Packit d0bcc1
 * @accessible: an #AtkObject
Packit d0bcc1
 *
Packit d0bcc1
 * Gets the number of accessible children of the accessible.
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: an integer representing the number of accessible children
Packit d0bcc1
 * of the accessible.
Packit d0bcc1
 **/
Packit d0bcc1
gint
Packit d0bcc1
atk_object_get_n_accessible_children (AtkObject *accessible)
Packit d0bcc1
{
Packit d0bcc1
  AtkObjectClass *klass;
Packit d0bcc1
Packit d0bcc1
  g_return_val_if_fail (ATK_IS_OBJECT (accessible), 0);
Packit d0bcc1
Packit d0bcc1
  klass = ATK_OBJECT_GET_CLASS (accessible);
Packit d0bcc1
  if (klass->get_n_children)
Packit d0bcc1
    return (klass->get_n_children) (accessible);
Packit d0bcc1
  else
Packit d0bcc1
    return 0;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_ref_accessible_child:
Packit d0bcc1
 * @accessible: an #AtkObject
Packit d0bcc1
 * @i: a gint representing the position of the child, starting from 0
Packit d0bcc1
 *
Packit d0bcc1
 * Gets a reference to the specified accessible child of the object.
Packit d0bcc1
 * The accessible children are 0-based so the first accessible child is
Packit d0bcc1
 * at index 0, the second at index 1 and so on.
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: (transfer full): an #AtkObject representing the specified
Packit d0bcc1
 * accessible child of the accessible.
Packit d0bcc1
 **/
Packit d0bcc1
AtkObject*
Packit d0bcc1
atk_object_ref_accessible_child (AtkObject   *accessible,
Packit d0bcc1
                                 gint        i)
Packit d0bcc1
{
Packit d0bcc1
  AtkObjectClass *klass;
Packit d0bcc1
Packit d0bcc1
  g_return_val_if_fail (ATK_IS_OBJECT (accessible), NULL);
Packit d0bcc1
Packit d0bcc1
  klass = ATK_OBJECT_GET_CLASS (accessible);
Packit d0bcc1
  if (klass->ref_child)
Packit d0bcc1
    return (klass->ref_child) (accessible, i);
Packit d0bcc1
  else
Packit d0bcc1
    return NULL;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_ref_relation_set:
Packit d0bcc1
 * @accessible: an #AtkObject
Packit d0bcc1
 *
Packit d0bcc1
 * Gets the #AtkRelationSet associated with the object.
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: (transfer full): an #AtkRelationSet representing the relation set
Packit d0bcc1
 * of the object.
Packit d0bcc1
 **/
Packit d0bcc1
AtkRelationSet*
Packit d0bcc1
atk_object_ref_relation_set (AtkObject *accessible)
Packit d0bcc1
{
Packit d0bcc1
  AtkObjectClass *klass;
Packit d0bcc1
Packit d0bcc1
  g_return_val_if_fail (ATK_IS_OBJECT (accessible), NULL);
Packit d0bcc1
Packit d0bcc1
  klass = ATK_OBJECT_GET_CLASS (accessible);
Packit d0bcc1
  if (klass->ref_relation_set)
Packit d0bcc1
    return (klass->ref_relation_set) (accessible);
Packit d0bcc1
  else
Packit d0bcc1
    return NULL;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_role_register:
Packit d0bcc1
 * @name: a character string describing the new role.
Packit d0bcc1
 *
Packit d0bcc1
 * Registers the role specified by @name. @name must be a meaningful
Packit d0bcc1
 * name. So it should not be empty, or consisting on whitespaces.
Packit d0bcc1
 *
Packit d0bcc1
 * Deprecated: Since 2.12. If your application/toolkit doesn't find a
Packit d0bcc1
 * suitable role for a specific object defined at #AtkRole, please
Packit d0bcc1
 * submit a bug in order to add a new role to the specification.
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: an #AtkRole for the new role if added
Packit d0bcc1
 * properly. ATK_ROLE_INVALID in case of error.
Packit d0bcc1
 **/
Packit d0bcc1
AtkRole
Packit d0bcc1
atk_role_register (const gchar *name)
Packit d0bcc1
{
Packit d0bcc1
  gboolean valid = FALSE;
Packit d0bcc1
  gint i = 0;
Packit d0bcc1
  glong length = g_utf8_strlen (name, -1);
Packit d0bcc1
Packit d0bcc1
  for (i=0; i < length; i++) {
Packit d0bcc1
    if (name[i]!=' ') {
Packit d0bcc1
      valid = TRUE;
Packit d0bcc1
      break;
Packit d0bcc1
    }
Packit d0bcc1
  }
Packit d0bcc1
Packit d0bcc1
  if (!valid)
Packit d0bcc1
    return ATK_ROLE_INVALID;
Packit d0bcc1
Packit d0bcc1
  if (!role_names)
Packit d0bcc1
    initialize_role_names ();
Packit d0bcc1
Packit d0bcc1
  g_ptr_array_add (role_names, g_strdup (name));
Packit d0bcc1
  return role_names->len - 1;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_get_role:
Packit d0bcc1
 * @accessible: an #AtkObject
Packit d0bcc1
 *
Packit d0bcc1
 * Gets the role of the accessible.
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: an #AtkRole which is the role of the accessible
Packit d0bcc1
 **/
Packit d0bcc1
AtkRole
Packit d0bcc1
atk_object_get_role (AtkObject *accessible) 
Packit d0bcc1
{
Packit d0bcc1
  AtkObjectClass *klass;
Packit d0bcc1
Packit d0bcc1
  g_return_val_if_fail (ATK_IS_OBJECT (accessible), ATK_ROLE_UNKNOWN);
Packit d0bcc1
Packit d0bcc1
  klass = ATK_OBJECT_GET_CLASS (accessible);
Packit d0bcc1
  if (klass->get_role)
Packit d0bcc1
    return (klass->get_role) (accessible);
Packit d0bcc1
  else
Packit d0bcc1
    return ATK_ROLE_UNKNOWN;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_get_layer:
Packit d0bcc1
 * @accessible: an #AtkObject
Packit d0bcc1
 *
Packit d0bcc1
 * Gets the layer of the accessible.
Packit d0bcc1
 *
Packit d0bcc1
 * Deprecated: Use atk_component_get_layer instead.
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: an #AtkLayer which is the layer of the accessible
Packit d0bcc1
 **/
Packit d0bcc1
AtkLayer
Packit d0bcc1
atk_object_get_layer (AtkObject *accessible) 
Packit d0bcc1
{
Packit d0bcc1
  AtkObjectClass *klass;
Packit d0bcc1
Packit d0bcc1
  g_return_val_if_fail (ATK_IS_OBJECT (accessible), ATK_LAYER_INVALID);
Packit d0bcc1
Packit d0bcc1
  klass = ATK_OBJECT_GET_CLASS (accessible);
Packit d0bcc1
  if (klass->get_layer)
Packit d0bcc1
    return (klass->get_layer) (accessible);
Packit d0bcc1
  else
Packit d0bcc1
    return ATK_LAYER_INVALID;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_get_mdi_zorder:
Packit d0bcc1
 * @accessible: an #AtkObject
Packit d0bcc1
 *
Packit d0bcc1
 * Gets the zorder of the accessible. The value G_MININT will be returned 
Packit d0bcc1
 * if the layer of the accessible is not ATK_LAYER_MDI.
Packit d0bcc1
 *
Packit d0bcc1
 * Deprecated: Use atk_component_get_mdi_zorder instead.
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: a gint which is the zorder of the accessible, i.e. the depth at 
Packit d0bcc1
 * which the component is shown in relation to other components in the same 
Packit d0bcc1
 * container.
Packit d0bcc1
 *
Packit d0bcc1
 **/
Packit d0bcc1
gint
Packit d0bcc1
atk_object_get_mdi_zorder (AtkObject *accessible) 
Packit d0bcc1
{
Packit d0bcc1
  AtkObjectClass *klass;
Packit d0bcc1
Packit d0bcc1
  g_return_val_if_fail (ATK_IS_OBJECT (accessible), G_MININT);
Packit d0bcc1
Packit d0bcc1
  klass = ATK_OBJECT_GET_CLASS (accessible);
Packit d0bcc1
  if (klass->get_mdi_zorder)
Packit d0bcc1
    return (klass->get_mdi_zorder) (accessible);
Packit d0bcc1
  else
Packit d0bcc1
    return G_MININT;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_ref_state_set:
Packit d0bcc1
 * @accessible: an #AtkObject
Packit d0bcc1
 *
Packit d0bcc1
 * Gets a reference to the state set of the accessible; the caller must
Packit d0bcc1
 * unreference it when it is no longer needed.
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: (transfer full): a reference to an #AtkStateSet which is the state
Packit d0bcc1
 * set of the accessible
Packit d0bcc1
 **/
Packit d0bcc1
AtkStateSet*
Packit d0bcc1
atk_object_ref_state_set (AtkObject *accessible) 
Packit d0bcc1
{
Packit d0bcc1
  AtkObjectClass *klass;
Packit d0bcc1
Packit d0bcc1
  g_return_val_if_fail (ATK_IS_OBJECT (accessible), NULL);
Packit d0bcc1
Packit d0bcc1
  klass = ATK_OBJECT_GET_CLASS (accessible);
Packit d0bcc1
  if (klass->ref_state_set)
Packit d0bcc1
    return (klass->ref_state_set) (accessible);
Packit d0bcc1
  else
Packit d0bcc1
    return NULL;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_get_index_in_parent:
Packit d0bcc1
 * @accessible: an #AtkObject
Packit d0bcc1
 *
Packit d0bcc1
 * Gets the 0-based index of this accessible in its parent; returns -1 if the
Packit d0bcc1
 * accessible does not have an accessible parent.
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: an integer which is the index of the accessible in its parent
Packit d0bcc1
 **/
Packit d0bcc1
gint
Packit d0bcc1
atk_object_get_index_in_parent (AtkObject *accessible)
Packit d0bcc1
{
Packit d0bcc1
  AtkObjectClass *klass;
Packit d0bcc1
Packit d0bcc1
  g_return_val_if_fail (ATK_OBJECT (accessible), -1);
Packit d0bcc1
Packit d0bcc1
  klass = ATK_OBJECT_GET_CLASS (accessible);
Packit d0bcc1
  if (klass->get_index_in_parent)
Packit d0bcc1
    return (klass->get_index_in_parent) (accessible);
Packit d0bcc1
  else
Packit d0bcc1
    return -1;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_set_name:
Packit d0bcc1
 * @accessible: an #AtkObject
Packit d0bcc1
 * @name: a character string to be set as the accessible name
Packit d0bcc1
 *
Packit d0bcc1
 * Sets the accessible name of the accessible. You can't set the name
Packit d0bcc1
 * to NULL. This is reserved for the initial value. In this aspect
Packit d0bcc1
 * NULL is similar to ATK_ROLE_UNKNOWN. If you want to set the name to
Packit d0bcc1
 * a empty value you can use "".
Packit d0bcc1
 **/
Packit d0bcc1
void
Packit d0bcc1
atk_object_set_name (AtkObject    *accessible,
Packit d0bcc1
                     const gchar  *name)
Packit d0bcc1
{
Packit d0bcc1
  AtkObjectClass *klass;
Packit d0bcc1
  gboolean notify = FALSE;
Packit d0bcc1
Packit d0bcc1
  g_return_if_fail (ATK_IS_OBJECT (accessible));
Packit d0bcc1
  g_return_if_fail (name != NULL);
Packit d0bcc1
Packit d0bcc1
  klass = ATK_OBJECT_GET_CLASS (accessible);
Packit d0bcc1
  if (klass->set_name)
Packit d0bcc1
    {
Packit d0bcc1
      /* Do not notify for initial name setting. See bug 665870 */
Packit d0bcc1
      notify = (accessible->name != NULL);
Packit d0bcc1
Packit d0bcc1
      (klass->set_name) (accessible, name);
Packit d0bcc1
      if (notify)
Packit d0bcc1
        g_object_notify (G_OBJECT (accessible), atk_object_name_property_name);
Packit d0bcc1
    }
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_set_description:
Packit d0bcc1
 * @accessible: an #AtkObject
Packit d0bcc1
 * @description: a character string to be set as the accessible description
Packit d0bcc1
 *
Packit d0bcc1
 * Sets the accessible description of the accessible. You can't set
Packit d0bcc1
 * the description to NULL. This is reserved for the initial value. In
Packit d0bcc1
 * this aspect NULL is similar to ATK_ROLE_UNKNOWN. If you want to set
Packit d0bcc1
 * the name to a empty value you can use "".
Packit d0bcc1
 **/
Packit d0bcc1
void
Packit d0bcc1
atk_object_set_description (AtkObject   *accessible,
Packit d0bcc1
                            const gchar *description)
Packit d0bcc1
{
Packit d0bcc1
  AtkObjectClass *klass;
Packit d0bcc1
  gboolean notify = FALSE;
Packit d0bcc1
Packit d0bcc1
  g_return_if_fail (ATK_IS_OBJECT (accessible));
Packit d0bcc1
  g_return_if_fail (description != NULL);
Packit d0bcc1
Packit d0bcc1
  klass = ATK_OBJECT_GET_CLASS (accessible);
Packit d0bcc1
  if (klass->set_description)
Packit d0bcc1
    {
Packit d0bcc1
      /* Do not notify for initial name setting. See bug 665870 */
Packit d0bcc1
      notify = (accessible->description != NULL);
Packit d0bcc1
Packit d0bcc1
      (klass->set_description) (accessible, description);
Packit d0bcc1
      if (notify)
Packit d0bcc1
        g_object_notify (G_OBJECT (accessible),
Packit d0bcc1
                         atk_object_name_property_description);
Packit d0bcc1
    }
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_set_parent:
Packit d0bcc1
 * @accessible: an #AtkObject
Packit d0bcc1
 * @parent: an #AtkObject to be set as the accessible parent
Packit d0bcc1
 *
Packit d0bcc1
 * Sets the accessible parent of the accessible. @parent can be NULL.
Packit d0bcc1
 **/
Packit d0bcc1
void
Packit d0bcc1
atk_object_set_parent (AtkObject *accessible,
Packit d0bcc1
                       AtkObject *parent)
Packit d0bcc1
{
Packit d0bcc1
  AtkObjectClass *klass;
Packit d0bcc1
Packit d0bcc1
  g_return_if_fail (ATK_IS_OBJECT (accessible));
Packit d0bcc1
Packit d0bcc1
  klass = ATK_OBJECT_GET_CLASS (accessible);
Packit d0bcc1
  if (klass->set_parent)
Packit d0bcc1
    {
Packit d0bcc1
      (klass->set_parent) (accessible, parent);
Packit d0bcc1
      g_object_notify (G_OBJECT (accessible), atk_object_name_property_parent);
Packit d0bcc1
    }
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_set_role:
Packit d0bcc1
 * @accessible: an #AtkObject
Packit d0bcc1
 * @role: an #AtkRole to be set as the role
Packit d0bcc1
 *
Packit d0bcc1
 * Sets the role of the accessible.
Packit d0bcc1
 **/
Packit d0bcc1
void
Packit d0bcc1
atk_object_set_role (AtkObject *accessible, 
Packit d0bcc1
                     AtkRole   role)
Packit d0bcc1
{
Packit d0bcc1
  AtkObjectClass *klass;
Packit d0bcc1
  AtkRole old_role;
Packit d0bcc1
Packit d0bcc1
  g_return_if_fail (ATK_IS_OBJECT (accessible));
Packit d0bcc1
Packit d0bcc1
  klass = ATK_OBJECT_GET_CLASS (accessible);
Packit d0bcc1
  if (klass->set_role)
Packit d0bcc1
    {
Packit d0bcc1
      old_role = atk_object_get_role (accessible);
Packit d0bcc1
      if (old_role != role)
Packit d0bcc1
        {
Packit d0bcc1
          (klass->set_role) (accessible, role);
Packit d0bcc1
          if (old_role != ATK_ROLE_UNKNOWN)
Packit d0bcc1
          /* Do not notify for initial role setting */
Packit d0bcc1
            g_object_notify (G_OBJECT (accessible), atk_object_name_property_role);
Packit d0bcc1
        }
Packit d0bcc1
    }
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_connect_property_change_handler: (skip)
Packit d0bcc1
 * @accessible: an #AtkObject
Packit d0bcc1
 * @handler: a function to be called when a property changes its value
Packit d0bcc1
 *
Packit d0bcc1
 * Deprecated: Since 2.12. Connect directly to property-change or
Packit d0bcc1
 * notify signals.
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: a #guint which is the handler id used in 
Packit d0bcc1
 * atk_object_remove_property_change_handler()
Packit d0bcc1
 **/
Packit d0bcc1
guint
Packit d0bcc1
atk_object_connect_property_change_handler (AtkObject *accessible,
Packit d0bcc1
                                            AtkPropertyChangeHandler *handler)
Packit d0bcc1
{
Packit d0bcc1
  AtkObjectClass *klass;
Packit d0bcc1
Packit d0bcc1
  g_return_val_if_fail (ATK_IS_OBJECT (accessible), 0);
Packit d0bcc1
  g_return_val_if_fail ((handler != NULL), 0);
Packit d0bcc1
Packit d0bcc1
  klass = ATK_OBJECT_GET_CLASS (accessible);
Packit d0bcc1
  if (klass->connect_property_change_handler)
Packit d0bcc1
    return (klass->connect_property_change_handler) (accessible, handler);
Packit d0bcc1
  else
Packit d0bcc1
    return 0;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_remove_property_change_handler:
Packit d0bcc1
 * @accessible: an #AtkObject
Packit d0bcc1
 * @handler_id: a guint which identifies the handler to be removed.
Packit d0bcc1
 *
Packit d0bcc1
 * Deprecated: Since 2.12.
Packit d0bcc1
 *
Packit d0bcc1
 * Removes a property change handler.
Packit d0bcc1
 **/
Packit d0bcc1
void
Packit d0bcc1
atk_object_remove_property_change_handler  (AtkObject *accessible,
Packit d0bcc1
                                            guint      handler_id)
Packit d0bcc1
{
Packit d0bcc1
  AtkObjectClass *klass;
Packit d0bcc1
Packit d0bcc1
  g_return_if_fail (ATK_IS_OBJECT (accessible));
Packit d0bcc1
Packit d0bcc1
  klass = ATK_OBJECT_GET_CLASS (accessible);
Packit d0bcc1
  if (klass->remove_property_change_handler)
Packit d0bcc1
    (klass->remove_property_change_handler) (accessible, handler_id);
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_notify_state_change:
Packit d0bcc1
 * @accessible: an #AtkObject
Packit d0bcc1
 * @state: an #AtkState whose state is changed
Packit d0bcc1
 * @value: a gboolean which indicates whether the state is being set on or off
Packit d0bcc1
 * 
Packit d0bcc1
 * Emits a state-change signal for the specified state.
Packit d0bcc1
 *
Packit d0bcc1
 * Note that as a general rule when the state of an existing object changes,
Packit d0bcc1
 * emitting a notification is expected.
Packit d0bcc1
 **/
Packit d0bcc1
void
Packit d0bcc1
atk_object_notify_state_change (AtkObject *accessible,
Packit d0bcc1
                                AtkState  state,
Packit d0bcc1
                                gboolean  value)
Packit d0bcc1
{
Packit d0bcc1
  const gchar* name;
Packit d0bcc1
Packit d0bcc1
  g_return_if_fail (ATK_IS_OBJECT (accessible));
Packit d0bcc1
Packit d0bcc1
  name = atk_state_type_get_name (state);
Packit d0bcc1
  g_signal_emit (accessible, atk_object_signals[STATE_CHANGE],
Packit d0bcc1
                 g_quark_from_string (name),
Packit d0bcc1
                 name, value, NULL);
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_implementor_ref_accessible:
Packit d0bcc1
 * @implementor: The #GObject instance which should implement #AtkImplementorIface
Packit d0bcc1
 * if a non-null return value is required.
Packit d0bcc1
 * 
Packit d0bcc1
 * Gets a reference to an object's #AtkObject implementation, if
Packit d0bcc1
 * the object implements #AtkObjectIface
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: (transfer full): a reference to an object's #AtkObject
Packit d0bcc1
 * implementation
Packit d0bcc1
 */
Packit d0bcc1
AtkObject *
Packit d0bcc1
atk_implementor_ref_accessible (AtkImplementor *implementor)
Packit d0bcc1
{
Packit d0bcc1
  AtkImplementorIface *iface;
Packit d0bcc1
  AtkObject           *accessible = NULL;
Packit d0bcc1
Packit d0bcc1
  g_return_val_if_fail (ATK_IS_IMPLEMENTOR (implementor), NULL);
Packit d0bcc1
Packit d0bcc1
  iface = ATK_IMPLEMENTOR_GET_IFACE (implementor);
Packit d0bcc1
Packit d0bcc1
  if (iface != NULL) 
Packit d0bcc1
    accessible =  iface->ref_accessible (implementor);
Packit d0bcc1
Packit d0bcc1
  g_return_val_if_fail ((accessible != NULL), NULL);
Packit d0bcc1
Packit d0bcc1
  return accessible;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
    	
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_get_attributes:
Packit d0bcc1
 * @accessible: An #AtkObject.
Packit d0bcc1
 *
Packit d0bcc1
 * Get a list of properties applied to this object as a whole, as an #AtkAttributeSet consisting of 
Packit d0bcc1
 * name-value pairs. As such these attributes may be considered weakly-typed properties or annotations, 
Packit d0bcc1
 * as distinct from strongly-typed object data available via other get/set methods.
Packit d0bcc1
 * Not all objects have explicit "name-value pair" #AtkAttributeSet properties.
Packit d0bcc1
 *
Packit d0bcc1
 * Since: 1.12
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: (transfer full): an #AtkAttributeSet consisting of all
Packit d0bcc1
 * explicit properties/annotations applied to the object, or an empty
Packit d0bcc1
 * set if the object has no name-value pair attributes assigned to
Packit d0bcc1
 * it. This #atkattributeset should be freed by a call to
Packit d0bcc1
 * atk_attribute_set_free().
Packit d0bcc1
 */
Packit d0bcc1
AtkAttributeSet *
Packit d0bcc1
atk_object_get_attributes (AtkObject                  *accessible)
Packit d0bcc1
{
Packit d0bcc1
  AtkObjectClass *klass;
Packit d0bcc1
Packit d0bcc1
  g_return_val_if_fail (ATK_IS_OBJECT (accessible), NULL);
Packit d0bcc1
Packit d0bcc1
  klass = ATK_OBJECT_GET_CLASS (accessible);
Packit d0bcc1
  if (klass->get_attributes)
Packit d0bcc1
    return (klass->get_attributes) (accessible); 
Packit d0bcc1
  else 
Packit d0bcc1
    return NULL;
Packit d0bcc1
	
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
static AtkRelationSet*
Packit d0bcc1
atk_object_real_ref_relation_set (AtkObject *accessible)
Packit d0bcc1
{
Packit d0bcc1
  g_return_val_if_fail (accessible->relation_set, NULL);
Packit d0bcc1
  g_object_ref (accessible->relation_set); 
Packit d0bcc1
Packit d0bcc1
  return accessible->relation_set;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
static void
Packit d0bcc1
atk_object_real_set_property (GObject      *object,
Packit d0bcc1
                              guint         prop_id,
Packit d0bcc1
                              const GValue *value,
Packit d0bcc1
                              GParamSpec   *pspec)
Packit d0bcc1
{
Packit d0bcc1
  AtkObject *accessible;
Packit d0bcc1
Packit d0bcc1
  accessible = ATK_OBJECT (object);
Packit d0bcc1
Packit d0bcc1
  switch (prop_id)
Packit d0bcc1
    {
Packit d0bcc1
    case PROP_NAME:
Packit d0bcc1
      atk_object_set_name (accessible, g_value_get_string (value));
Packit d0bcc1
      break;
Packit d0bcc1
    case PROP_DESCRIPTION:
Packit d0bcc1
      atk_object_set_description (accessible, g_value_get_string (value));
Packit d0bcc1
      break;
Packit d0bcc1
    case PROP_ROLE:
Packit d0bcc1
      atk_object_set_role (accessible, g_value_get_int (value));
Packit d0bcc1
      break;
Packit d0bcc1
    case PROP_PARENT:
Packit d0bcc1
      atk_object_set_parent (accessible, g_value_get_object (value));
Packit d0bcc1
      break;
Packit d0bcc1
    case PROP_VALUE:
Packit d0bcc1
      if (ATK_IS_VALUE (accessible))
Packit d0bcc1
        atk_value_set_current_value (ATK_VALUE (accessible), value);
Packit d0bcc1
      break;
Packit d0bcc1
    case PROP_TABLE_SUMMARY:
Packit d0bcc1
      if (ATK_IS_TABLE (accessible))
Packit d0bcc1
        atk_table_set_summary (ATK_TABLE (accessible), g_value_get_object (value));
Packit d0bcc1
      break;
Packit d0bcc1
    case PROP_TABLE_CAPTION_OBJECT:
Packit d0bcc1
      if (ATK_IS_TABLE (accessible))
Packit d0bcc1
        atk_table_set_caption (ATK_TABLE (accessible), g_value_get_object (value));
Packit d0bcc1
      break;
Packit d0bcc1
    default:
Packit d0bcc1
      break;
Packit d0bcc1
    }
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
static void
Packit d0bcc1
atk_object_real_get_property (GObject      *object,
Packit d0bcc1
                              guint         prop_id,
Packit d0bcc1
                              GValue       *value,
Packit d0bcc1
                              GParamSpec   *pspec)
Packit d0bcc1
{
Packit d0bcc1
  AtkObject *accessible;
Packit d0bcc1
Packit d0bcc1
  accessible = ATK_OBJECT (object);
Packit d0bcc1
Packit d0bcc1
  switch (prop_id)
Packit d0bcc1
    {
Packit d0bcc1
    case PROP_NAME:
Packit d0bcc1
      g_value_set_string (value, atk_object_get_name (accessible));
Packit d0bcc1
      break;
Packit d0bcc1
    case PROP_DESCRIPTION:
Packit d0bcc1
      g_value_set_string (value, atk_object_get_description (accessible));
Packit d0bcc1
      break;
Packit d0bcc1
    case PROP_ROLE:
Packit d0bcc1
      g_value_set_int (value, atk_object_get_role (accessible));
Packit d0bcc1
      break;
Packit d0bcc1
    case PROP_LAYER:
Packit d0bcc1
      if (ATK_IS_COMPONENT (accessible))
Packit d0bcc1
        g_value_set_int (value, atk_component_get_layer (ATK_COMPONENT (accessible)));
Packit d0bcc1
      break;
Packit d0bcc1
    case PROP_MDI_ZORDER:
Packit d0bcc1
      if (ATK_IS_COMPONENT (accessible))
Packit d0bcc1
        g_value_set_int (value, atk_component_get_mdi_zorder (ATK_COMPONENT (accessible)));
Packit d0bcc1
      break;
Packit d0bcc1
    case PROP_PARENT:
Packit d0bcc1
      g_value_set_object (value, atk_object_get_parent (accessible));
Packit d0bcc1
      break;
Packit d0bcc1
    case PROP_VALUE:
Packit d0bcc1
      if (ATK_IS_VALUE (accessible))
Packit d0bcc1
        atk_value_get_current_value (ATK_VALUE (accessible), value);
Packit d0bcc1
      break;
Packit d0bcc1
    case PROP_TABLE_SUMMARY:
Packit d0bcc1
      if (ATK_IS_TABLE (accessible))
Packit d0bcc1
        g_value_set_object (value, atk_table_get_summary (ATK_TABLE (accessible)));
Packit d0bcc1
      break;
Packit d0bcc1
    case PROP_TABLE_CAPTION_OBJECT:
Packit d0bcc1
      if (ATK_IS_TABLE (accessible))
Packit d0bcc1
        g_value_set_object (value, atk_table_get_caption (ATK_TABLE (accessible)));
Packit d0bcc1
      break;
Packit d0bcc1
    case PROP_HYPERTEXT_NUM_LINKS:
Packit d0bcc1
      if (ATK_IS_HYPERTEXT (accessible))
Packit d0bcc1
        g_value_set_int (value, atk_hypertext_get_n_links (ATK_HYPERTEXT (accessible)));
Packit d0bcc1
      break;
Packit d0bcc1
    default:
Packit d0bcc1
      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
Packit d0bcc1
      break;
Packit d0bcc1
    }
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
static void
Packit d0bcc1
atk_object_finalize (GObject *object)
Packit d0bcc1
{
Packit d0bcc1
  AtkObject        *accessible;
Packit d0bcc1
Packit d0bcc1
  g_return_if_fail (ATK_IS_OBJECT (object));
Packit d0bcc1
Packit d0bcc1
  accessible = ATK_OBJECT (object);
Packit d0bcc1
Packit d0bcc1
  g_free (accessible->name);
Packit d0bcc1
  g_free (accessible->description);
Packit d0bcc1
Packit d0bcc1
  /*
Packit d0bcc1
   * Free memory allocated for relation set if it have been allocated.
Packit d0bcc1
   */
Packit d0bcc1
  if (accessible->relation_set)
Packit d0bcc1
    g_object_unref (accessible->relation_set);
Packit d0bcc1
Packit d0bcc1
  if (accessible->accessible_parent)
Packit d0bcc1
    g_object_unref (accessible->accessible_parent);
Packit d0bcc1
Packit d0bcc1
  G_OBJECT_CLASS (parent_class)->finalize (object);
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
static const gchar*
Packit d0bcc1
atk_object_real_get_name (AtkObject *object)
Packit d0bcc1
{
Packit d0bcc1
  return object->name;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
static const gchar*
Packit d0bcc1
atk_object_real_get_description (AtkObject *object)
Packit d0bcc1
{
Packit d0bcc1
  return object->description;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
static AtkObject*
Packit d0bcc1
atk_object_real_get_parent (AtkObject       *object)
Packit d0bcc1
{
Packit d0bcc1
  return atk_object_peek_parent (object);
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
static AtkRole
Packit d0bcc1
atk_object_real_get_role (AtkObject       *object)
Packit d0bcc1
{
Packit d0bcc1
  return object->role;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
static AtkLayer
Packit d0bcc1
atk_object_real_get_layer (AtkObject       *object)
Packit d0bcc1
{
Packit d0bcc1
  return object->layer;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
static AtkStateSet*
Packit d0bcc1
atk_object_real_ref_state_set (AtkObject *accessible) 
Packit d0bcc1
{
Packit d0bcc1
  AtkStateSet *state_set;
Packit d0bcc1
  AtkObject *focus_object;
Packit d0bcc1
Packit d0bcc1
  state_set = atk_state_set_new ();
Packit d0bcc1
Packit d0bcc1
  focus_object = atk_get_focus_object ();
Packit d0bcc1
  if (focus_object == accessible)
Packit d0bcc1
    atk_state_set_add_state (state_set, ATK_STATE_FOCUSED);
Packit d0bcc1
Packit d0bcc1
  return state_set; 
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
static void
Packit d0bcc1
atk_object_real_set_name (AtkObject       *object,
Packit d0bcc1
                          const gchar     *name)
Packit d0bcc1
{
Packit d0bcc1
  g_free (object->name);
Packit d0bcc1
  object->name = g_strdup (name);
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
static void
Packit d0bcc1
atk_object_real_set_description (AtkObject       *object,
Packit d0bcc1
                                 const gchar     *description)
Packit d0bcc1
{
Packit d0bcc1
  g_free (object->description);
Packit d0bcc1
  object->description = g_strdup (description);
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
static void
Packit d0bcc1
atk_object_real_set_parent (AtkObject       *object,
Packit d0bcc1
                            AtkObject       *parent)
Packit d0bcc1
{
Packit d0bcc1
  if (object->accessible_parent)
Packit d0bcc1
    g_object_unref (object->accessible_parent);
Packit d0bcc1
Packit d0bcc1
  object->accessible_parent = parent;
Packit d0bcc1
  if (object->accessible_parent)
Packit d0bcc1
    g_object_ref (object->accessible_parent);
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
static void
Packit d0bcc1
atk_object_real_set_role (AtkObject *object,
Packit d0bcc1
                          AtkRole   role)
Packit d0bcc1
{
Packit d0bcc1
  object->role = role;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_initialize:
Packit d0bcc1
 * @accessible: a #AtkObject
Packit d0bcc1
 * @data: a #gpointer which identifies the object for which the AtkObject was created.
Packit d0bcc1
 *
Packit d0bcc1
 * This function is called when implementing subclasses of #AtkObject.
Packit d0bcc1
 * It does initialization required for the new object. It is intended
Packit d0bcc1
 * that this function should called only in the ..._new() functions used
Packit d0bcc1
 * to create an instance of a subclass of #AtkObject
Packit d0bcc1
 **/
Packit d0bcc1
void
Packit d0bcc1
atk_object_initialize (AtkObject  *accessible,
Packit d0bcc1
                       gpointer   data)
Packit d0bcc1
{
Packit d0bcc1
  AtkObjectClass *klass;
Packit d0bcc1
Packit d0bcc1
  g_return_if_fail (ATK_IS_OBJECT (accessible));
Packit d0bcc1
Packit d0bcc1
  klass = ATK_OBJECT_GET_CLASS (accessible);
Packit d0bcc1
  if (klass->initialize)
Packit d0bcc1
    klass->initialize (accessible, data);
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/*
Packit d0bcc1
 * This function is a signal handler for notify signal which gets emitted
Packit d0bcc1
 * when a property changes value.
Packit d0bcc1
 *
Packit d0bcc1
 * It constructs an AtkPropertyValues structure and emits a "property_changed"
Packit d0bcc1
 * signal which causes the user specified AtkPropertyChangeHandler
Packit d0bcc1
 * to be called.
Packit d0bcc1
 */
Packit d0bcc1
static void
Packit d0bcc1
atk_object_notify (GObject     *obj,
Packit d0bcc1
                   GParamSpec  *pspec)
Packit d0bcc1
{
Packit d0bcc1
  AtkPropertyValues values = { NULL, };
Packit d0bcc1
Packit d0bcc1
  g_value_init (&values.new_value, pspec->value_type);
Packit d0bcc1
  g_object_get_property (obj, pspec->name, &values.new_value);
Packit d0bcc1
  values.property_name = pspec->name;
Packit d0bcc1
  g_signal_emit (obj, atk_object_signals[PROPERTY_CHANGE],
Packit d0bcc1
                 g_quark_from_string (pspec->name),
Packit d0bcc1
                 &values, NULL);
Packit d0bcc1
  g_value_unset (&values.new_value);
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_role_get_name:
Packit d0bcc1
 * @role: The #AtkRole whose name is required
Packit d0bcc1
 *
Packit d0bcc1
 * Gets the description string describing the #AtkRole @role.
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: the string describing the AtkRole
Packit d0bcc1
 */
Packit d0bcc1
const gchar*
Packit d0bcc1
atk_role_get_name (AtkRole role)
Packit d0bcc1
{
Packit d0bcc1
  g_return_val_if_fail (role >= 0, NULL);
Packit d0bcc1
Packit d0bcc1
  if (!role_names)
Packit d0bcc1
    initialize_role_names ();
Packit d0bcc1
Packit d0bcc1
  if (role < role_names->len)
Packit d0bcc1
    return g_ptr_array_index (role_names, role);
Packit d0bcc1
Packit d0bcc1
  return NULL;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_role_get_localized_name:
Packit d0bcc1
 * @role: The #AtkRole whose localized name is required
Packit d0bcc1
 *
Packit d0bcc1
 * Gets the localized description string describing the #AtkRole @role.
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: the localized string describing the AtkRole
Packit d0bcc1
 **/
Packit d0bcc1
const gchar*
Packit d0bcc1
atk_role_get_localized_name (AtkRole role)
Packit d0bcc1
{
Packit d0bcc1
  _gettext_initialization ();
Packit d0bcc1
Packit d0bcc1
  return dgettext (GETTEXT_PACKAGE, atk_role_get_name (role));
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
static const gchar*
Packit d0bcc1
atk_object_real_get_object_locale (AtkObject *object)
Packit d0bcc1
{
Packit d0bcc1
  return setlocale (LC_MESSAGES, NULL);
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_get_object_locale:
Packit d0bcc1
 * @accessible: an #AtkObject
Packit d0bcc1
 *
Packit d0bcc1
 * Gets a UTF-8 string indicating the POSIX-style LC_MESSAGES locale
Packit d0bcc1
 * of @accessible.
Packit d0bcc1
 *
Packit d0bcc1
 * Since: 2.8
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: a UTF-8 string indicating the POSIX-style LC_MESSAGES
Packit d0bcc1
 *          locale of @accessible.
Packit d0bcc1
 **/
Packit d0bcc1
const gchar*
Packit d0bcc1
atk_object_get_object_locale (AtkObject *accessible)
Packit d0bcc1
{
Packit d0bcc1
  AtkObjectClass *klass;
Packit d0bcc1
Packit d0bcc1
  g_return_val_if_fail (ATK_IS_OBJECT (accessible), NULL);
Packit d0bcc1
Packit d0bcc1
  klass = ATK_OBJECT_GET_CLASS (accessible);
Packit d0bcc1
  if (klass->get_object_locale)
Packit d0bcc1
    return (klass->get_object_locale) (accessible);
Packit d0bcc1
  else
Packit d0bcc1
    return NULL;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_role_for_name:
Packit d0bcc1
 * @name: a string which is the (non-localized) name of an ATK role.
Packit d0bcc1
 *
Packit d0bcc1
 * Get the #AtkRole type corresponding to a rolew name.
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: the #AtkRole enumerated type corresponding to the specified name,
Packit d0bcc1
 *          or #ATK_ROLE_INVALID if no matching role is found.
Packit d0bcc1
 **/
Packit d0bcc1
AtkRole
Packit d0bcc1
atk_role_for_name (const gchar *name)
Packit d0bcc1
{
Packit d0bcc1
  AtkRole role = ATK_ROLE_INVALID;
Packit d0bcc1
  gint i;
Packit d0bcc1
Packit d0bcc1
  g_return_val_if_fail (name, ATK_ROLE_INVALID);
Packit d0bcc1
Packit d0bcc1
  if (!role_names)
Packit d0bcc1
    initialize_role_names ();
Packit d0bcc1
Packit d0bcc1
  for (i = 0; i < role_names->len; i++)
Packit d0bcc1
    {
Packit d0bcc1
      gchar *role_name = (gchar *)g_ptr_array_index (role_names, i);
Packit d0bcc1
Packit d0bcc1
      g_return_val_if_fail (role_name, ATK_ROLE_INVALID);
Packit d0bcc1
Packit d0bcc1
      if (strcmp (name, role_name) == 0)
Packit d0bcc1
        {
Packit d0bcc1
          role = i;
Packit d0bcc1
          break;
Packit d0bcc1
        }
Packit d0bcc1
    }
Packit d0bcc1
Packit d0bcc1
  return role;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_add_relationship:
Packit d0bcc1
 * @object: The #AtkObject to which an AtkRelation is to be added. 
Packit d0bcc1
 * @relationship: The #AtkRelationType of the relation
Packit d0bcc1
 * @target: The #AtkObject which is to be the target of the relation.
Packit d0bcc1
 *
Packit d0bcc1
 * Adds a relationship of the specified type with the specified target.
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: TRUE if the relationship is added.
Packit d0bcc1
 **/
Packit d0bcc1
gboolean
Packit d0bcc1
atk_object_add_relationship (AtkObject       *object,
Packit d0bcc1
                             AtkRelationType relationship,
Packit d0bcc1
                             AtkObject       *target)
Packit d0bcc1
{
Packit d0bcc1
  AtkObject *array[1];
Packit d0bcc1
  AtkRelation *relation;
Packit d0bcc1
Packit d0bcc1
  g_return_val_if_fail (ATK_IS_OBJECT (object), FALSE);
Packit d0bcc1
  g_return_val_if_fail (ATK_IS_OBJECT (target), FALSE);
Packit d0bcc1
Packit d0bcc1
  if (atk_relation_set_contains_target (object->relation_set,
Packit d0bcc1
                                        relationship, target))
Packit d0bcc1
    return FALSE;
Packit d0bcc1
Packit d0bcc1
  array[0] = target;
Packit d0bcc1
  relation = atk_relation_new (array, 1, relationship);
Packit d0bcc1
  atk_relation_set_add (object->relation_set, relation);
Packit d0bcc1
  g_object_unref (relation);
Packit d0bcc1
Packit d0bcc1
  return TRUE;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
/**
Packit d0bcc1
 * atk_object_remove_relationship:
Packit d0bcc1
 * @object: The #AtkObject from which an AtkRelation is to be removed. 
Packit d0bcc1
 * @relationship: The #AtkRelationType of the relation
Packit d0bcc1
 * @target: The #AtkObject which is the target of the relation to be removed.
Packit d0bcc1
 *
Packit d0bcc1
 * Removes a relationship of the specified type with the specified target.
Packit d0bcc1
 *
Packit d0bcc1
 * Returns: TRUE if the relationship is removed.
Packit d0bcc1
 **/
Packit d0bcc1
gboolean
Packit d0bcc1
atk_object_remove_relationship (AtkObject       *object,
Packit d0bcc1
                                AtkRelationType relationship,
Packit d0bcc1
                                AtkObject       *target)
Packit d0bcc1
{
Packit d0bcc1
  gboolean ret = FALSE;
Packit d0bcc1
  AtkRelation *relation;
Packit d0bcc1
  GPtrArray *array;
Packit d0bcc1
Packit d0bcc1
  g_return_val_if_fail (ATK_IS_OBJECT (object), FALSE);
Packit d0bcc1
  g_return_val_if_fail (ATK_IS_OBJECT (target), FALSE);
Packit d0bcc1
Packit d0bcc1
  relation = atk_relation_set_get_relation_by_type (object->relation_set, relationship);
Packit d0bcc1
Packit d0bcc1
  if (relation)
Packit d0bcc1
    {
Packit d0bcc1
      ret = atk_relation_remove_target (relation, target);
Packit d0bcc1
      array = atk_relation_get_target (relation);
Packit d0bcc1
      if (!array || array->len == 0)
Packit d0bcc1
        atk_relation_set_remove (object->relation_set, relation);
Packit d0bcc1
    }
Packit d0bcc1
  return ret;
Packit d0bcc1
}
Packit d0bcc1
Packit d0bcc1
static void
Packit d0bcc1
atk_object_real_initialize (AtkObject *accessible,
Packit d0bcc1
                            gpointer  data)
Packit d0bcc1
{
Packit d0bcc1
  return;
Packit d0bcc1
}