Exemplo n.º 1
0
static AtkObject*
jaw_table_get_summary (AtkTable *table)
{
	JawObject *jaw_obj = JAW_OBJECT(table);
	TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
	jobject atk_table = data->atk_table;

	JNIEnv *jniEnv = jaw_util_get_jni_env();
	jclass classAtkTable = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkTable");
	jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkTable, "get_summary", "()Ljavax/accessibility/AccessibleContext;");
	jobject jac = (*jniEnv)->CallObjectMethod(jniEnv, atk_table, jmid);

	if (!jac) {
		return NULL;
	}

	JawImpl* jaw_impl = jaw_impl_get_instance( jniEnv, jac );

	return ATK_OBJECT(jaw_impl);
}
AtkObject *
accessible_image_view_new (GtkWidget *widget)
{
        GObject *object;
        AtkObject *accessible;
	GtkAccessible *gtk_accessible;

        object = g_object_new (ACCESSIBLE_TYPE_IMAGE_VIEW, NULL);
        g_return_val_if_fail(object != NULL, NULL);

        accessible = ATK_OBJECT (object);
	gtk_accessible = GTK_ACCESSIBLE (accessible);
	gtk_accessible->widget = widget;

	atk_object_initialize (accessible, widget);

        accessible->role = ATK_ROLE_IMAGE;

        return accessible;
}
Exemplo n.º 3
0
Arquivo: gailbutton.c Projeto: BYC/gtk
static void
gail_button_notify_weak_ref (gpointer data, GObject* obj)
{
  GtkLabel *label = NULL;

  AtkObject* atk_obj = ATK_OBJECT (obj);
  if (data && GTK_IS_WIDGET (data))
    {
      label = GTK_LABEL (data);
      if (label)
        {
          g_signal_handlers_disconnect_by_func (label,
                                                (GCallback) gail_button_notify_label_gtk,
                                                GAIL_BUTTON (atk_obj));
          g_object_weak_unref (G_OBJECT (label),
                               gail_button_notify_label_weak_ref,
                               GAIL_BUTTON (atk_obj));
        }
    }
}
static gboolean
window_event_listener (GSignalInvocationHint * signal_hint,
                       guint n_param_values,
                       const GValue * param_values, gpointer data)
{
  AtkObject *accessible;
  GSignalQuery signal_query;
  const gchar *name, *s;

  g_signal_query (signal_hint->signal_id, &signal_query);
  name = signal_query.signal_name;

  accessible = ATK_OBJECT (g_value_get_object (&param_values[0]));
  s = atk_object_get_name (accessible);

  g_print ("Detected window event \"%s\" from object \"%p\" named \"%s\"\n",
           name, accessible, s);

  return TRUE;
}
Exemplo n.º 5
0
static gint
gail_container_real_add_gtk (GtkContainer *container,
                             GtkWidget    *widget,
                             gpointer     data)
{
  AtkObject* atk_parent = ATK_OBJECT (data);
  AtkObject* atk_child = gtk_widget_get_accessible (widget);
  GailContainer *gail_container = GAIL_CONTAINER (atk_parent);
  gint       index;

  g_object_notify (G_OBJECT (atk_child), "accessible_parent");

  g_list_free (gail_container->children);
  gail_container->children = gtk_container_get_children (container);
  index = g_list_index (gail_container->children, widget);
  g_signal_emit_by_name (atk_parent, "children_changed::add", 
                         index, atk_child, NULL);

  return 1;
}
static AtkObject*
getRowHeaderCB(AtkTable *aTable, gint aRow)
{
    nsAccessibleWrap *accWrap = GetAccessibleWrap(ATK_OBJECT(aTable));
    if (!accWrap)
        return nsnull;

    nsCOMPtr<nsIAccessibleTable> accTable;
    accWrap->QueryInterface(NS_GET_IID(nsIAccessibleTable),
                            getter_AddRefs(accTable));
    NS_ENSURE_TRUE(accTable, nsnull);

    nsCOMPtr<nsIAccessible> accCell;
    accTable->GetCellAt(aRow, 0, getter_AddRefs(accCell));
    if (!accCell)
      return nsnull;

    // If the cell at the first column is row header then assume it is row
    // header for all columns,
    if (nsAccUtils::Role(accCell) == nsIAccessibleRole::ROLE_ROWHEADER)
        return nsAccessibleWrap::GetAtkObject(accCell);

    // otherwise get row header for the data cell at the first column.
    nsCOMPtr<nsIAccessibleTableCell> accTableCell =
        do_QueryInterface(accCell);

    if (accTableCell) {
      nsCOMPtr<nsIArray> headerCells;
      accTableCell->GetRowHeaderCells(getter_AddRefs(headerCells));
      if (headerCells) {
        nsresult rv;
        nsCOMPtr<nsIAccessible> accHeaderCell =
            do_QueryElementAt(headerCells, 0, &rv);
        NS_ENSURE_SUCCESS(rv, nsnull);

        return nsAccessibleWrap::GetAtkObject(accHeaderCell);
      }
    }

    return nsnull;
}
JSStringRef AccessibilityUIElement::language()
{
    if (!m_element)
        return JSStringCreateWithCharacters(0, 0);

    // In ATK, the document language is exposed as the document's locale.
    if (atk_object_get_role(ATK_OBJECT(m_element)) == ATK_ROLE_DOCUMENT_FRAME)
        return JSStringCreateWithUTF8CString(g_strdup_printf("AXLanguage: %s", atk_document_get_locale(ATK_DOCUMENT(m_element))));

    // For all other objects, the language is exposed as an AtkText attribute.
    if (!ATK_IS_TEXT(m_element))
        return JSStringCreateWithCharacters(0, 0);

    for (GSList* textAttributes = atk_text_get_default_attributes(ATK_TEXT(m_element)); textAttributes; textAttributes = textAttributes->next) {
        AtkAttribute* atkAttribute = static_cast<AtkAttribute*>(textAttributes->data);
        if (!strcmp(atkAttribute->name, atk_text_attribute_get_name(ATK_TEXT_ATTR_LANGUAGE)))
            return JSStringCreateWithUTF8CString(g_strdup_printf("AXLanguage: %s", atkAttribute->value));
    }

    return JSStringCreateWithCharacters(0, 0);
}
Exemplo n.º 8
0
Arquivo: testcombo.c Projeto: BYC/gtk
static gint _close_combo_list (gpointer data)
{
  AtkObject *obj = ATK_OBJECT (data);

  gint count;
  gint n_children;
  AtkObject *list;

  count = atk_selection_get_selection_count (ATK_SELECTION (obj));
  g_return_val_if_fail (count == 0, FALSE);

  list = atk_object_ref_accessible_child (obj, 0);
  n_children = atk_object_get_n_accessible_children (list); 
  g_object_unref (G_OBJECT (list));

  atk_selection_add_selection (ATK_SELECTION (obj), n_children - 1);

  atk_action_do_action (ATK_ACTION (obj), 0);

  return FALSE;
}
gboolean
setRunAttributesCB(AtkEditableText *aText, AtkAttributeSet *aAttribSet,
                   gint aStartOffset, gint aEndOffset)

{
    nsAccessibleWrap *accWrap = GetAccessibleWrap(ATK_OBJECT(aText));
    if (!accWrap)
        return FALSE;

    nsCOMPtr<nsIAccessibleEditableText> accText;
    accWrap->QueryInterface(NS_GET_IID(nsIAccessibleEditableText),
                            getter_AddRefs(accText));
    NS_ENSURE_TRUE(accText, FALSE);

    nsCOMPtr<nsISupports> attrSet;
    /* how to insert attributes into nsISupports ??? */

    nsresult rv = accText->SetAttributes(aStartOffset, aEndOffset,
                                         attrSet);
    return NS_FAILED(rv) ? FALSE : TRUE;
}
Exemplo n.º 10
0
static AtkObject *
get_atk_object_ref (GObject *gobject)
{
  AtkObject *aobject;

  if (ATK_IS_IMPLEMENTOR (gobject))
    {
      aobject = atk_implementor_ref_accessible (ATK_IMPLEMENTOR (gobject));
    }
  else if (ATK_IS_OBJECT (gobject))
    {
      aobject = ATK_OBJECT (gobject);
      g_object_ref (G_OBJECT (aobject));
    }
  else
    {
      aobject = NULL;
      g_error ("received event from non-AtkImplementor");
    }

  return aobject;
}
Exemplo n.º 11
0
static gboolean
table_remove_row_selection (AtkTable *table,
                            gint row)
{
	ETableItem *item;
	GalA11yETableItemPrivate *priv = GET_PRIVATE (table);

	if (atk_state_set_contains_state (priv->state_set, ATK_STATE_DEFUNCT))
		return FALSE;

	item = E_TABLE_ITEM (eti_a11y_get_gobject (ATK_OBJECT (table)));
	if (!item)
		return FALSE;

	if (!atk_table_is_row_selected (table, row))
		return TRUE;

	e_selection_model_toggle_single_row (
		item->selection, view_to_model_row (item, row));

	return TRUE;
}
Exemplo n.º 12
0
/**
 * @brief Handler for unrealized event, used to notify about gengrid content
 * changes
 *
 * @param data passed to callback
 * @param obj object that raised event
 * @param event_info additional event info (item is passed here)
 */
void
eail_gengrid_item_handle_unrealized_event(void *data,
                                          Evas_Object *obj,
                                          void *event_info)
{
   Elm_Object_Item *item = (Elm_Object_Item *) event_info;
   AtkObject *atk_item = NULL, *atk_parent = NULL;

   atk_parent = ATK_OBJECT(data);
   if (!atk_parent) return;

   atk_item = eail_factory_get_item_atk_obj
                                         (item, ATK_ROLE_LIST_ITEM, atk_parent);

   if (!atk_item) return;

   eail_emit_children_changed_obj(FALSE, atk_parent, atk_item);
   atk_object_notify_state_change(atk_item, ATK_STATE_DEFUNCT, TRUE);

   DBG("Unregistering item from cache...");
   eail_factory_unregister_item_from_cache(item);
}
Exemplo n.º 13
0
static gint
notify_child_added (gpointer data)
{
  GailNotebookPage *page;
  AtkObject *atk_object, *atk_parent;

  g_return_val_if_fail (GAIL_IS_NOTEBOOK_PAGE (data), FALSE);
  page = GAIL_NOTEBOOK_PAGE (data);
  atk_object = ATK_OBJECT (data);

  page->notify_child_added_id = 0;

  /* The widget page->notebook may be deleted before this handler is called */
  if (page->notebook != NULL)
    {
      atk_parent = gtk_widget_get_accessible (GTK_WIDGET (page->notebook));
      atk_object_set_parent (atk_object, atk_parent);
      g_signal_emit_by_name (atk_parent, "children_changed::add", page->index, atk_object, NULL);
    }
  
  return FALSE;
}
AtkHyperlink *
getLinkCB(AtkHypertext *aText, gint aLinkIndex)
{
    nsAccessibleWrap *accWrap = GetAccessibleWrap(ATK_OBJECT(aText));
    if (!accWrap)
        return nsnull;

    nsHyperTextAccessible* hyperText = accWrap->AsHyperText();
    NS_ENSURE_TRUE(hyperText, nsnull);

    nsAccessible* hyperLink = hyperText->GetLinkAt(aLinkIndex);
    if (!hyperLink)
        return nsnull;

    AtkObject* hyperLinkAtkObj = nsAccessibleWrap::GetAtkObject(hyperLink);
    nsAccessibleWrap *accChild = GetAccessibleWrap(hyperLinkAtkObj);
    NS_ENSURE_TRUE(accChild, nsnull);

    MaiHyperlink *maiHyperlink = accChild->GetMaiHyperlink();
    NS_ENSURE_TRUE(maiHyperlink, nsnull);
    return maiHyperlink->GetAtkHyperlink();
}
Exemplo n.º 15
0
AtkObject *
refSelectionCB(AtkSelection *aSelection, gint i)
{
    nsAccessibleWrap *accWrap = GetAccessibleWrap(ATK_OBJECT(aSelection));
    NS_ENSURE_TRUE(accWrap, nsnull);

    nsCOMPtr<nsIAccessibleSelectable> accSelection;
    accWrap->QueryInterface(NS_GET_IID(nsIAccessibleSelectable),
                            getter_AddRefs(accSelection));
    NS_ENSURE_TRUE(accSelection, nsnull);

    AtkObject *atkObj = nsnull;
    nsCOMPtr<nsIAccessible> accSelect;
    nsresult rv = accSelection->RefSelection(i, getter_AddRefs(accSelect));
    if (NS_SUCCEEDED(rv) && accSelect) {
        nsIAccessible *tmpAcc = accSelect;
        nsAccessibleWrap *refAccWrap =
            NS_STATIC_CAST(nsAccessibleWrap *, tmpAcc);
        atkObj = refAccWrap->GetAtkObject();
        if (atkObj)
            g_object_ref(atkObj);
    }
Exemplo n.º 16
0
static AtkObject *
eti_ref_accessible_at_point (AtkComponent *component,
                             gint x,
                             gint y,
                             AtkCoordType coord_type)
{
	gint row = -1;
	gint col = -1;
	gint x_origin, y_origin;
	ETableItem *item;
	GtkWidget *tableOrTree;

	item = E_TABLE_ITEM (eti_a11y_get_gobject (ATK_OBJECT (component)));
	if (!item)
		return NULL;

	atk_component_get_extents (
		component,
		&x_origin,
		&y_origin,
		NULL,
		NULL,
		coord_type);
	x -= x_origin;
	y -= y_origin;

	tableOrTree = gtk_widget_get_parent (GTK_WIDGET (item->parent.canvas));

	if (E_IS_TREE (tableOrTree))
		e_tree_get_cell_at (E_TREE (tableOrTree), x, y, &row, &col);
	else
		e_table_get_cell_at (E_TABLE (tableOrTree), x, y, &row, &col);

	if (row != -1 && col != -1) {
		return eti_ref_at (ATK_TABLE (component), row, col);
	} else {
		return NULL;
	}
}
Exemplo n.º 17
0
/**
 * @brief Returns naviframe-page implementation for given object item
 *
 * @param naviframe an naviframe AtkObject
 * @param item an Elm_Object_Item for naviframe-page
 *
 * @returns an AtkObject* representation for naviframe-page
 */
static AtkObject *
_eail_naviframe_get_naviframe_page_for_item(AtkObject *naviframe,
                                            Elm_Object_Item *item)
{
   EailFactoryObj *factory_obj = NULL;
   AtkObject *naviframe_page = NULL;

   factory_obj = eail_factory_find_obj_for_item(item);
   if (factory_obj)
     {
        if (!factory_obj->atk_obj)
          ERR("No atk obj created for factory item object");

        return factory_obj->atk_obj;
     }

   naviframe_page = eail_naviframe_page_new(naviframe, item);
   atk_object_initialize(naviframe_page, item);
   eail_factory_append_item_to_cache(ATK_OBJECT(naviframe_page), item);

   return naviframe_page;
}
Exemplo n.º 18
0
static gint
eti_get_row_extent_at (AtkTable *table,
                       gint row,
                       gint column)
{
	ETableItem *item;
	gint height;

	item = E_TABLE_ITEM (eti_a11y_get_gobject (ATK_OBJECT (table)));
	if (!item)
		return -1;

	e_table_item_get_cell_geometry (item,
					&row,
					&column,
					NULL,
					NULL,
					NULL,
					&height);

	return height;
}
Exemplo n.º 19
0
static gboolean
focus_notify_handler (gpointer p)
{
  CallbackPara *para = (CallbackPara*)p;
  jobject global_ac = para->global_ac;

  JNIEnv *jniEnv = jaw_util_get_jni_env();
  if (jniEnv == NULL)
  {
    if (jaw_debug)
      g_warning("\nfocus_notify_handler: env == NULL\n");
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }
  if (global_ac == NULL)
  {
    if (jaw_debug)
      g_warning("\nfocus_notify_handler: global_ac == NULL\n");
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }
  JawImpl* jaw_impl = jaw_impl_get_instance(jniEnv, global_ac);
  if (jaw_impl == NULL)
  {
    if (jaw_debug)
      g_warning("\nfocus_notify_handler: jaw_impl == NULL\n");
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }

  AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
  atk_object_notify_state_change(atk_obj,
                                 ATK_STATE_SHOWING,
                                 1);

  free_callback_para(para);

  return G_SOURCE_REMOVE;
}
Exemplo n.º 20
0
static gboolean
window_state_change_handler (gpointer p)
{
  CallbackPara *para = (CallbackPara*)p;
  jobject global_ac = para->global_ac;

  JNIEnv *jniEnv = jaw_util_get_jni_env();
  if (jniEnv == NULL)
  {
    if (jaw_debug)
      g_warning("window_state_change_handler: env == NULL");
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }

  if (global_ac == NULL)
  {
    if (jaw_debug)
      g_warning("window_state_change_handler: global_ac == NULL");
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }

  JawImpl* jaw_impl = jaw_impl_get_instance(jniEnv, global_ac);
  if (jaw_impl == NULL)
  {
    if (jaw_debug)
      g_warning("window_state_change_handler: jaw_impl == NULL");
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }

  AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
  g_signal_emit_by_name(atk_obj, "state-change", 0);

  free_callback_para(para);

  return G_SOURCE_REMOVE;
}
Exemplo n.º 21
0
gchar *
getTextCB(AtkText *aText, gint aStartOffset, gint aEndOffset)
{
    nsAccessibleWrap *accWrap = GetAccessibleWrap(ATK_OBJECT(aText));
    if (!accWrap)
        return nsnull;

    nsCOMPtr<nsIAccessibleText> accText;
    accWrap->QueryInterface(NS_GET_IID(nsIAccessibleText),
                            getter_AddRefs(accText));
    NS_ENSURE_TRUE(accText, nsnull);

    nsAutoString autoStr;
    nsresult rv = accText->GetText(aStartOffset, aEndOffset, autoStr);
    NS_ENSURE_SUCCESS(rv, nsnull);

    ConvertTexttoAsterisks(accWrap, autoStr);
    NS_ConvertUTF16toUTF8 cautoStr(autoStr);

    //copy and return, libspi will free it.
    return (cautoStr.get()) ? g_strdup(cautoStr.get()) : nsnull;
}
Exemplo n.º 22
0
static gboolean
object_state_change_handler (gpointer p)
{
  CallbackPara *para = (CallbackPara*)p;
  jobject global_ac = para->global_ac;

  JNIEnv *jniEnv = jaw_util_get_jni_env();
  if (jniEnv == NULL)
  {
    if (jaw_debug)
      g_warning("object_state_change_handler: env == NULL");
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }

  if (global_ac == NULL)
  {
    if (jaw_debug)
      g_warning("object_state_change_handler: global_ac");
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }

  JawImpl* jaw_impl = jaw_impl_get_instance(jniEnv, global_ac);
  if (jaw_impl == NULL)
  {
    if (jaw_debug)
      g_warning("object_state_change_handler: jaw_impl == NULL");
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }

  atk_object_notify_state_change(ATK_OBJECT(jaw_impl),
                                 para->atk_state,
                                 para->state_value);

  free_callback_para(para);
  return G_SOURCE_REMOVE;
}
Exemplo n.º 23
0
static gint
table_interface_get_row_extent_at (AtkTable *table,
                                   gint row,
                                   gint column)
{
	gint index;
	gint width = 0, height = 0;
	AtkObject *child;
	EaDayViewMainItem * ea_main_item = EA_DAY_VIEW_MAIN_ITEM (table);

	index = ea_day_view_main_item_get_child_index_at (
		ea_main_item,
		row, column);
	child = atk_object_ref_accessible_child (
		ATK_OBJECT (ea_main_item),
		index);
	if (child)
		atk_component_get_size (
			ATK_COMPONENT (child), &width, &height);

	return height;
}
Exemplo n.º 24
0
void
getCharacterExtentsCB(AtkText *aText, gint aOffset,
                      gint *aX, gint *aY,
                      gint *aWidth, gint *aHeight,
                      AtkCoordType aCoords)
{
    nsAccessibleWrap *accWrap = GetAccessibleWrap(ATK_OBJECT(aText));
    if(!accWrap || !aX || !aY || !aWidth || !aHeight)
        return;

    nsCOMPtr<nsIAccessibleText> accText;
    accWrap->QueryInterface(NS_GET_IID(nsIAccessibleText),
                            getter_AddRefs(accText));
    if (!accText)
        return;

    PRInt32 extY = 0, extX = 0;
    PRInt32 extWidth = 0, extHeight = 0;

    PRUint32 geckoCoordType;
    if (aCoords == ATK_XY_SCREEN)
        geckoCoordType = nsIAccessibleCoordinateType::COORDTYPE_SCREEN_RELATIVE;
    else
        geckoCoordType = nsIAccessibleCoordinateType::COORDTYPE_WINDOW_RELATIVE;

#ifdef DEBUG
    nsresult rv =
#endif
    accText->GetCharacterExtents(aOffset, &extX, &extY,
                                 &extWidth, &extHeight,
                                 geckoCoordType);
    *aX = extX;
    *aY = extY;
    *aWidth = extWidth;
    *aHeight = extHeight;
    NS_ASSERTION(NS_SUCCEEDED(rv),
                 "MaiInterfaceText::GetCharacterExtents, failed\n");
}
Exemplo n.º 25
0
static gboolean axObjectEventListener(GSignalInvocationHint *signalHint,
                                      guint numParamValues,
                                      const GValue *paramValues,
                                      gpointer data)
{
    // At least we should receive the instance emitting the signal.
    if (numParamValues < 1)
        return TRUE;

    AtkObject* accessible = ATK_OBJECT(g_value_get_object(&paramValues[0]));
    if (!accessible || !ATK_IS_OBJECT(accessible))
        return TRUE;

    GSignalQuery signal_query;
    GOwnPtr<gchar> signalName;

    g_signal_query(signalHint->signal_id, &signal_query);

    if (!g_strcmp0(signal_query.signal_name, "state-change")) {
        signalName.set(g_strdup_printf("state-change:%s = %d",
                                       g_value_get_string(&paramValues[1]),
                                       g_value_get_boolean(&paramValues[2])));
    } else if (!g_strcmp0(signal_query.signal_name, "focus-event")) {
        signalName.set(g_strdup_printf("focus-event = %d",
                                       g_value_get_boolean(&paramValues[1])));
    } else if (!g_strcmp0(signal_query.signal_name, "children-changed")) {
        signalName.set(g_strdup_printf("children-changed = %d",
                                       g_value_get_uint(&paramValues[1])));
    } else if (!g_strcmp0(signal_query.signal_name, "property-change")) {
        signalName.set(g_strdup_printf("property-change:%s",
                                       g_quark_to_string(signalHint->detail)));
    } else
        signalName.set(g_strdup(signal_query.signal_name));

    printAccessibilityEvent(accessible, signalName.get());

    return TRUE;
}
Exemplo n.º 26
0
static AtkObject*
gtk_icon_view_accessible_ref_accessible_at_point (AtkComponent *component,
                                                  gint          x,
                                                  gint          y,
                                                  AtkCoordType  coord_type)
{
  GtkWidget *widget;
  GtkIconView *icon_view;
  GtkIconViewItem *item;
  gint x_pos, y_pos;

  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (component));
  if (widget == NULL)
    return NULL;

  icon_view = GTK_ICON_VIEW (widget);
  atk_component_get_extents (component, &x_pos, &y_pos, NULL, NULL, coord_type);
  item = _gtk_icon_view_get_item_at_coords (icon_view, x - x_pos, y - y_pos, TRUE, NULL);
  if (item)
    return gtk_icon_view_accessible_ref_child (ATK_OBJECT (component), item->index);

  return NULL;
}
Exemplo n.º 27
0
static AtkObject*
refAtCB(AtkTable *aTable, gint aRow, gint aColumn)
{
    nsAccessibleWrap *accWrap = GetAccessibleWrap(ATK_OBJECT(aTable));
    if (!accWrap)
        return nsnull;

    nsCOMPtr<nsIAccessibleTable> accTable;
    accWrap->QueryInterface(NS_GET_IID(nsIAccessibleTable),
                            getter_AddRefs(accTable));
    NS_ENSURE_TRUE(accTable, nsnull);

    nsCOMPtr<nsIAccessible> cell;
    nsresult rv = accTable->GetCellAt(aRow, aColumn,getter_AddRefs(cell));
    if (NS_FAILED(rv) || !cell)
        return nsnull;

    AtkObject *cellAtkObj = nsAccessibleWrap::GetAtkObject(cell);
    if (cellAtkObj) {
        g_object_ref(cellAtkObj);
    }
    return cellAtkObj;
}
AccessibilityUIElement AccessibilityUIElement::titleUIElement()
{
    if (!m_element)
        return 0;

    AtkRelationSet* set = atk_object_ref_relation_set(ATK_OBJECT(m_element));
    if (!set)
        return 0;

    AtkObject* target = 0;
    int count = atk_relation_set_get_n_relations(set);
    for (int i = 0; i < count; i++) {
        AtkRelation* relation = atk_relation_set_get_relation(set, i);
        if (atk_relation_get_relation_type(relation) == ATK_RELATION_LABELLED_BY) {
            GPtrArray* targetList = atk_relation_get_target(relation);
            if (targetList->len)
                target = static_cast<AtkObject*>(g_ptr_array_index(targetList, 0));
        }
    }

    g_object_unref(set);
    return target ? AccessibilityUIElement(target) : 0;
}
Exemplo n.º 29
0
static void
ensure_menus_unposted (GailMenuItem *menu_item)
{
  AtkObject *parent;
  GtkWidget *widget;

  parent = atk_object_get_parent (ATK_OBJECT (menu_item));
  while (parent)
    {
      if (GTK_IS_ACCESSIBLE (parent))
        {
          widget = GTK_ACCESSIBLE (parent)->widget;
          if (GTK_IS_MENU (widget))
            {
              if (gtk_widget_get_mapped (widget))
                gtk_menu_shell_cancel (GTK_MENU_SHELL (widget));

              return;
            }
        }
      parent = atk_object_get_parent (parent);
    }
}
Exemplo n.º 30
0
static gboolean
gtk_icon_view_item_accessible_add_state (GtkIconViewItemAccessible *item,
                                         AtkStateType               state_type,
                                         gboolean                   emit_signal)
{
  gboolean rc;

  rc = atk_state_set_add_state (item->state_set, state_type);

  /* The signal should only be generated if the value changed,
   * not when the item is set up. So states that are set
   * initially should pass FALSE as the emit_signal argument.
   */
  if (emit_signal)
    {
      atk_object_notify_state_change (ATK_OBJECT (item), state_type, TRUE);
      /* If state_type is ATK_STATE_VISIBLE, additional notification */
      if (state_type == ATK_STATE_VISIBLE)
        g_signal_emit_by_name (item, "visible-data-changed");
    }

  return rc;
}