コード例 #1
0
static DBusMessage *
impl_Embedded (DBusConnection *bus,
                    DBusMessage *message,
                    void *user_data)
{
  AtkObject *object = (AtkObject *) user_data;
  char *path;
  gchar *id;

  if (!dbus_message_get_args (message, NULL, DBUS_TYPE_STRING, &path, DBUS_TYPE_INVALID))
    {
      return droute_invalid_arguments_error (message);
    }
  id = g_strconcat (dbus_message_get_sender (message), ":", path, NULL);
  g_object_set_data_full (G_OBJECT (object), "dbus-plug-parent", id, (GDestroyNotify)g_free);

  if (ATK_IS_COMPONENT (object))
    {
      AtkComponent *component = ATK_COMPONENT (object);
      AtkComponentIface *iface = ATK_COMPONENT_GET_IFACE (component);
      iface->get_extents = atspi_plug_component_get_extents;
      iface->get_size = atspi_plug_component_get_size;
      iface->get_position = atspi_plug_component_get_position;
    }

  /* Retrieve some info about the children, if they exist, when
     embedding the plug to ensure the a11y subtree is generated.
     https://bugzilla.gnome.org/show_bug.cgi?id=663876 */
  atk_object_get_n_accessible_children (object);

  return dbus_message_new_method_return (message);
}
コード例 #2
0
ファイル: testselection.c プロジェクト: Aridna/gtk2
static AtkObject* 
_find_object (AtkObject *obj, 
              AtkRole   role)
{
  /*
   * Find the first object which is a descendant of the specified object
   * which matches the specified role.
   *
   * This function returns a reference to the AtkObject which should be
   * removed when finished with the object.
   */
  gint i;
  gint n_children;
  AtkObject *child;

  n_children = atk_object_get_n_accessible_children (obj);
  for (i = 0; i < n_children; i++) 
  {
    AtkObject* found_obj;

    child = atk_object_ref_accessible_child (obj, i);
    if (atk_object_get_role (child) == role)
    {
      return child;
    }
    found_obj = _find_object (child, role);
    g_object_unref (child);
    if (found_obj)
    {
      return found_obj;
    }
  }
  return NULL;
}
コード例 #3
0
int AccessibilityUIElement::childrenCount()
{
    if (!ATK_IS_OBJECT(m_element.get()))
        return 0;

    return atk_object_get_n_accessible_children(ATK_OBJECT(m_element.get()));
}
コード例 #4
0
ファイル: testcombo.c プロジェクト: BYC/gtk
static void _test_selection (AtkObject *obj)
{
  gint count;
  gint n_children;
  AtkObject *list;

  count = atk_selection_get_selection_count (ATK_SELECTION (obj));
  g_return_if_fail (count == 0);

  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);
  count = atk_selection_get_selection_count (ATK_SELECTION (obj));
  g_return_if_fail (count == 1);
  g_return_if_fail (atk_selection_is_child_selected (ATK_SELECTION (obj),
                     n_children - 1));	
  atk_selection_add_selection (ATK_SELECTION (obj), 0);
  count = atk_selection_get_selection_count (ATK_SELECTION (obj));
  g_return_if_fail (count == 1);
  g_return_if_fail (atk_selection_is_child_selected (ATK_SELECTION (obj), 0));
  atk_selection_clear_selection (ATK_SELECTION (obj));
  count = atk_selection_get_selection_count (ATK_SELECTION (obj));
  g_return_if_fail (count == 0);
}
コード例 #5
0
void
_do_test(AtkObject *obj)
{
   const char *type_name = g_type_name(G_TYPE_FROM_INSTANCE(obj));

   g_assert(ATK_IS_OBJECT(obj));
   g_assert_cmpstr(type_name, ==, "EailFlipselector");

   g_assert(atk_object_get_n_accessible_children(obj) == ITEMS_COUNT);

   /*
    * AtkSelection tests
    */
   g_assert(ATK_IS_SELECTION(obj));

   /* atk_selection_add_selection test */
   g_assert(atk_selection_add_selection(ATK_SELECTION(obj), ITEM_SEL_EINA));
   g_assert(atk_selection_is_child_selected(ATK_SELECTION(obj), ITEM_SEL_EINA));

   /* atk_selection_clear_selection test */
   g_assert(atk_selection_clear_selection(ATK_SELECTION(obj)) == FALSE);

   /* eail_flipselector_ref_selection test */
   g_assert(atk_selection_is_child_selected(ATK_SELECTION(obj), ITEM_SEL_EINA));

   /* atk_selection_get_selection_count test */
   g_assert(atk_selection_get_selection_count(ATK_SELECTION(obj)) == MAX_SELECTIONS);

   /* atk_selection_is_child_selected test */
   g_assert(atk_selection_is_child_selected(ATK_SELECTION(obj), ITEM_SEL_EINA));

   /* atk_selection_remove_selection test */
   g_assert(atk_selection_remove_selection(ATK_SELECTION(obj), ITEM_SEL_EINA));
   g_assert(atk_selection_is_child_selected(ATK_SELECTION(obj), ITEM_SEL_ELM));

   /* atk_selection_select_all_selection test */
   g_assert(atk_selection_select_all_selection(ATK_SELECTION(obj)) == FALSE);

   /*
    * AtkAction tests
    */
   g_assert(ATK_IS_ACTION(obj));

   /* atk_action_get_n_actions test */
   g_assert(atk_action_get_n_actions(ATK_ACTION(obj)) == ACTIONS_COUNT);

   /* test existing actions */
   g_assert(atk_selection_add_selection(ATK_SELECTION(obj), ITEM_SEL_EINA));
   eailu_test_action_activate(ATK_ACTION(obj), "next");
   g_assert(atk_selection_is_child_selected(ATK_SELECTION(obj), ITEM_SEL_EDJE));

   eailu_test_action_activate(ATK_ACTION(obj), "prev");
   g_assert(atk_selection_is_child_selected(ATK_SELECTION(obj), ITEM_SEL_EINA));

   /* test for non-existing action */
   g_assert((eailu_get_action_number(ATK_ACTION(obj), "typo")) == -1);

   /* test set/get action description */
   eailu_test_action_description_all(ATK_ACTION(obj));
}
コード例 #6
0
static void
_do_test(AtkObject *obj)
{
   const char *type_name = g_type_name(G_TYPE_FROM_INSTANCE(obj));
   const char *type_name_child;
   AtkObject *xobj;

   _printf("type_name: %s\n", type_name);

   g_assert_cmpstr(type_name, ==, "EailBubble");

   // test children
   g_assert(2 == atk_object_get_n_accessible_children(obj));

   for (int count = 0; 2 > count; count++)
     {
       xobj = atk_object_ref_accessible_child(obj, count);
       g_assert(xobj);
       type_name_child = g_type_name(G_TYPE_FROM_INSTANCE(xobj));
       _printf(" child num: %d, type_name: %s\n", count, type_name_child);
       g_assert(!strcmp(type_name_child, "EailIcon") || !strcmp(type_name_child, "EailLabel"));
     }

   // test AtkAction
   g_assert(ACTIONS_NUMBER == atk_action_get_n_actions(ATK_ACTION(obj)));
   eailu_test_action_activate(ATK_ACTION(obj), "click");
   g_assert(-1 == (eailu_get_action_number(ATK_ACTION(obj), "typo")));
   eailu_test_action_description_all(ATK_ACTION(obj));

   /* bubble object does not support focus */
   eailu_test_atk_focus(obj, FALSE);
}
コード例 #7
0
static void
_test_layout_object(AtkObject *object)
{
   int child_count;

   eail_test_code_called++;
   child_count = atk_object_get_n_accessible_children(object);
   if (eail_test_code_called == 1)
     g_assert(2 == child_count);
   else
     g_assert(3 == child_count);

   for(int i =0; i < child_count; i++)
     {
        AtkObject *child = atk_object_ref_accessible_child(object, i);
        gboolean success = FALSE;
        if (eail_test_code_called == 1)
          success = eailu_is_object_with_role(child, ATK_ROLE_ICON);
        else
          success = eailu_is_object_with_role(child, ATK_ROLE_PUSH_BUTTON);
        g_object_unref(child);
        g_assert(success);
     }

   g_assert(eailu_is_object_with_role(object, ATK_ROLE_FILLER));
}
コード例 #8
0
static G_CONST_RETURN gchar*
jaw_object_get_name (AtkObject *atk_obj)
{
	JawObject *jaw_obj = JAW_OBJECT(atk_obj);
	jobject ac = jaw_obj->acc_context;
	JNIEnv *jniEnv = jaw_util_get_jni_env();

	if (atk_object_get_role(atk_obj) == ATK_ROLE_COMBO_BOX
			&& atk_object_get_n_accessible_children(atk_obj) == 1) {
		AtkSelection *selection = ATK_SELECTION(atk_obj);
		if (selection != NULL) {
			AtkObject *child = atk_selection_ref_selection(selection, 0);
			if (child != NULL) {
				return atk_object_get_name(child);
			}
		}
	}
	
	jclass classAccessibleContext = (*jniEnv)->FindClass( jniEnv, "javax/accessibility/AccessibleContext" );
	jmethodID jmid = (*jniEnv)->GetMethodID( jniEnv, classAccessibleContext, "getAccessibleName", "()Ljava/lang/String;" );
	jstring jstr = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid );

	if (atk_obj->name != NULL) {
		(*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrName, atk_obj->name);
		(*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrName);
	}

	if (jstr != NULL) {
		jaw_obj->jstrName = (*jniEnv)->NewGlobalRef(jniEnv, jstr);
		atk_obj->name = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv, jaw_obj->jstrName, NULL);
	}

	return atk_obj->name;
}
コード例 #9
0
static DBusMessage *
impl_GetChildren (DBusConnection * bus,
                  DBusMessage * message, void *user_data)
{
  AtkObject *object = (AtkObject *) user_data;
  gint i;
  gint count;
  DBusMessage *reply;
  DBusMessageIter iter, iter_array;

  g_return_val_if_fail (ATK_IS_OBJECT (user_data),
                        droute_not_yet_handled_error (message));
  count = atk_object_get_n_accessible_children (object);
  reply = dbus_message_new_method_return (message);
  if (!reply)
    goto oom;
  dbus_message_iter_init_append (reply, &iter);
  if (!dbus_message_iter_open_container
      (&iter, DBUS_TYPE_ARRAY, "(so)", &iter_array))
    goto oom;
  for (i = 0; i < count; i++)
    {
      AtkObject *child = atk_object_ref_accessible_child (object, i);
      spi_object_append_reference (&iter_array, child); 
      if (child)
        g_object_unref (child);
    }
  if (!dbus_message_iter_close_container (&iter, &iter_array))
    goto oom;
  return reply;
oom:
  // TODO: handle out-of-memory
  return reply;
}
コード例 #10
0
static void
_do_test(AtkObject *obj)
{
   const char *type_name = g_type_name(G_TYPE_FROM_INSTANCE(obj));
   const char *name = atk_object_get_name(ATK_OBJECT(obj));
   const char *type_name_child;
   AtkStateSet *state_set;
   AtkObject *xobj;

   _printf("type_name: %s\n", type_name ? type_name : "NULL");
   g_assert(name);
   _printf("name: %s\n", name);

   g_assert_cmpstr(type_name, ==, "EailCheck");

   g_assert(ATK_IS_OBJECT(obj));
   g_assert(ATK_IS_ACTION(obj));
   g_assert(ATK_IS_TEXT(obj));

   state_set = atk_object_ref_state_set(obj);

   if (!strcmp(name, CHECK_TEXT1))
     {
        _printf("check test: %s\n", CHECK_TEXT1);

        g_assert(atk_state_set_contains_state(state_set, ATK_STATE_CHECKED));

        // test children
        g_assert(0 == atk_object_get_n_accessible_children(obj));
     }
   else if (!strcmp(name, CHECK_TEXT2))
     {
       _printf("check test: %s\n", CHECK_TEXT2);

       g_assert(!atk_state_set_contains_state(state_set, ATK_STATE_CHECKED));

       // test children
       g_assert(1 == atk_object_get_n_accessible_children(obj));

       xobj = atk_object_ref_accessible_child(obj, 0);
       g_assert(NULL != xobj);
       type_name_child = g_type_name(G_TYPE_FROM_INSTANCE(xobj));
       _printf("type_name_child: %s\n", type_name_child);
       g_assert_cmpstr(type_name_child, ==, "EailIcon");
     }
コード例 #11
0
static void
_do_test(AtkObject *obj)
{
   AtkObject *child;
   const char *type_name = g_type_name(G_TYPE_FROM_INSTANCE(obj));
   int i;

   g_assert_cmpstr(type_name, ==, "EailPrefs");

   g_assert(atk_object_get_n_accessible_children(obj) == CHILDREN_COUNT);

   for (i = 0; i < atk_object_get_n_accessible_children(obj); ++i)
     {
        child = atk_object_ref_accessible_child(obj, i);
        g_assert(child);
        g_object_unref(child);
     }
}
コード例 #12
0
ファイル: testcombo.c プロジェクト: BYC/gtk
static void _check_children (AtkObject *obj)
{
  gint n_children, i, j;
  AtkObject *child;
  AtkObject *grand_child;

  n_children = atk_object_get_n_accessible_children (obj);

  if (n_children > 1)
  {
    g_print ("*** Unexpected number of children for combo box: %d\n", 
             n_children);
    return;
  }
  if (n_children == 2)
  {
    child = atk_object_ref_accessible_child (obj, 1);
    g_return_if_fail (atk_object_get_role (child) == ATK_ROLE_TEXT);
    j = atk_object_get_index_in_parent (child);
    if (j != 1)
     g_print ("*** inconsistency between parent and children %d %d ***\n",
              1, j);       
    g_object_unref (G_OBJECT (child));
  }

  child = atk_object_ref_accessible_child (obj, 0);
  g_return_if_fail (atk_object_get_role (child) == ATK_ROLE_LIST);
  j = atk_object_get_index_in_parent (child);
  if (j != 0)
     g_print ("*** inconsistency between parent and children %d %d ***\n",
              0, j);       

  n_children = atk_object_get_n_accessible_children (child);
  for (i = 0; i < n_children; i++)
  {
    G_CONST_RETURN gchar *name;

    grand_child = atk_object_ref_accessible_child (child, i);
    name = atk_object_get_name (grand_child);
    g_print ("Index: %d Name: %s\n", i, name ? name : "<NULL>");
    g_object_unref (G_OBJECT (grand_child));
  }
  g_object_unref (G_OBJECT (child));
}
コード例 #13
0
ファイル: accessible.c プロジェクト: GNOME/at-spi
/*
 * CORBA Accessibility::Accessible::get_childCount method implementation
 */
static CORBA_long
impl_accessibility_accessible_get_child_count (PortableServer_Servant servant,
                                               CORBA_Environment     *ev)
{
  AtkObject *object = get_atkobject_from_servant (servant);

  g_return_val_if_fail (object != NULL, 0);

  return atk_object_get_n_accessible_children (object);
}
コード例 #14
0
ファイル: gtkwidgetaccessible.c プロジェクト: Pfiver/gtk
static gint
gtk_widget_accessible_get_index_in_parent (AtkObject *accessible)
{
  GtkWidget *widget;
  GtkWidget *parent_widget;
  gint index;
  GList *children;

  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible));

  if (widget == NULL)
    return -1;

  if (accessible->accessible_parent)
    {
      AtkObject *parent;

      parent = accessible->accessible_parent;

      if (GTK_IS_NOTEBOOK_PAGE_ACCESSIBLE (parent))
        return 0;
      else
        {
          gint n_children, i;
          gboolean found = FALSE;

          n_children = atk_object_get_n_accessible_children (parent);
          for (i = 0; i < n_children; i++)
            {
              AtkObject *child;

              child = atk_object_ref_accessible_child (parent, i);
              if (child == accessible)
                found = TRUE;

              g_object_unref (child);
              if (found)
                return i;
            }
        }
    }

  if (!GTK_IS_WIDGET (widget))
    return -1;
  parent_widget = gtk_widget_get_parent (widget);
  if (!GTK_IS_CONTAINER (parent_widget))
    return -1;

  children = gtk_container_get_children (GTK_CONTAINER (parent_widget));

  index = g_list_index (children, widget);
  g_list_free (children);
  return index;
}
コード例 #15
0
static dbus_bool_t
impl_get_ChildCount (DBusMessageIter * iter, void *user_data)
{
  AtkObject *object = (AtkObject *) user_data;
  int childCount;

  g_return_val_if_fail (ATK_IS_OBJECT (user_data), FALSE);

  childCount = (ATK_IS_SOCKET (object) && atk_socket_is_occupied (ATK_SOCKET (object)))
               ? 1
               : atk_object_get_n_accessible_children (object);
  return droute_return_v_int32 (iter, childCount);
}
コード例 #16
0
ファイル: testimage.c プロジェクト: BYC/gtk
static void _traverse_children (AtkObject *obj)
{
  gint n_children, i;

  n_children = atk_object_get_n_accessible_children (obj);
  for (i = 0; i < n_children; i++)
  {
    AtkObject *child;

    child = atk_object_ref_accessible_child (obj, i);
	_print_image_info(child);
    _traverse_children (child);
    g_object_unref (G_OBJECT (child));
  }
}
コード例 #17
0
static G_CONST_RETURN gchar*
jaw_toplevel_get_name (AtkObject *obj)
{
	gint i;
	for(i = 0; i < atk_object_get_n_accessible_children(obj); i++) {
		AtkObject* child = atk_object_ref_accessible_child(obj, i);
		const gchar* name = atk_object_get_name(child);
		if (name && strlen(name) > 0) {
			g_object_unref(G_OBJECT(child));
			return name;
		}
		g_object_unref(G_OBJECT(child));
	}

	return "Java Application";
}
コード例 #18
0
ファイル: eail_genlist_tc1.c プロジェクト: mknapinski/eail
static void
_do_test(AtkObject *aobj)
{
   int child_amount = 0;

   g_assert(ATK_IS_OBJECT(aobj));

   g_assert(atk_object_get_role(aobj) == ATK_ROLE_LIST);

   child_amount = atk_object_get_n_accessible_children(aobj);
   g_assert(N_ITEMS == child_amount);

   eailu_test_atk_focus(aobj, TRUE);

   eailu_test_code_called = 1;
}
コード例 #19
0
ファイル: goocanvasatk.c プロジェクト: AbuMussabRaja/yarp
static gint
goo_canvas_item_accessible_get_index_in_parent (AtkObject *accessible)
{
  GooCanvasItem *item, *parent;
  GooCanvas *canvas;
  GObject *object;

  g_return_val_if_fail (GOO_IS_CANVAS_ITEM_ACCESSIBLE (accessible), -1);

  if (accessible->accessible_parent)
    {
      gint n_children, i;
      gboolean found = FALSE;

      n_children = atk_object_get_n_accessible_children (accessible->accessible_parent);
      for (i = 0; i < n_children; i++)
        {
          AtkObject *child;

          child = atk_object_ref_accessible_child (accessible->accessible_parent, i);
          if (child == accessible)
            found = TRUE;

          g_object_unref (child);
          if (found)
            return i;
        }
      return -1;
    }

  object = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (accessible));
  if (object == NULL)
    return -1;

  item = GOO_CANVAS_ITEM (object);
  parent = goo_canvas_item_get_parent (item);

  if (parent)
    return goo_canvas_item_find_child (parent, item);

  canvas = goo_canvas_item_get_canvas (item);
  if (canvas)
    return 0;

  return -1;
}
コード例 #20
0
static void
_test_index_object(AtkObject *obj)
{
   int n_children = 0, i = 0;
   printf("Testing index instance\n");

   eailu_test_atk_focus(obj, FALSE);
   n_children = atk_object_get_n_accessible_children(obj);
   /* there should be 13 index entries */
   g_assert(13 == n_children);
   for (i = 0; i < n_children; ++i)
     {
        _test_index_child_for_object(obj, i);
     }

   printf("DONE. All index test passed successfully \n");
}
コード例 #21
0
ファイル: eail_naviframe_tc1.c プロジェクト: mknapinski/eail
static void
_do_test(AtkObject *obj)
{
   int child_count = 0;

   g_assert(ATK_IS_OBJECT(obj));
   atk_object_set_description(obj, "test");
   g_assert_cmpstr(atk_object_get_description(obj), ==, "test");

   g_object_ref(obj);
   child_count = atk_object_get_n_accessible_children(obj);
   g_assert(child_count == 0);

   g_assert(atk_object_get_role(obj) == ATK_ROLE_PAGE_TAB_LIST);
   g_object_unref(obj);

   eailu_test_code_called = 1;
}
コード例 #22
0
static gboolean
my_atk_selection_clear_selection (AtkSelection *selection)
{
  MyAtkSelection *self = MY_ATK_SELECTION(selection);
  if (!self)
    return FALSE;
  AtkObject *child = NULL;
  AtkStateSet *states = NULL;
  int i;
  int childs = atk_object_get_n_accessible_children (ATK_OBJECT (selection));

  for (i=0; i<childs; i++) {
    child = atk_object_ref_accessible_child (ATK_OBJECT (selection), i);
    states = atk_object_ref_state_set (child);
    atk_state_set_remove_state (states, ATK_STATE_SELECTED);
  }
  return TRUE;
}
コード例 #23
0
ファイル: eail_app.c プロジェクト: patrykka/eail
/**
 * @brief Initializer for AtkObjectClass
 *
 * @param obj an AtkObject to be initialized
 * @param data additional initialization data (Evas_Object*)
 */
static void
eail_app_initialize(AtkObject *obj, gpointer data)
{
   int argc;
   char **argv;
   EailApp *eail_app = NULL;

   ATK_OBJECT_CLASS(eail_app_parent_class)->initialize(obj, data);

   ecore_app_args_get(&argc, &argv);
   obj->name = argv ? g_strdup((gchar *)ecore_file_file_get(argv[0])) : NULL;
   obj->role = ATK_ROLE_APPLICATION;
   obj->accessible_parent = NULL;

   /* storing last numbers of children to be for checking if children-changed
     * signal has to be propagated */
   eail_app = EAIL_APP(obj);
   eail_app->child_count_last = atk_object_get_n_accessible_children(obj);
}
コード例 #24
0
ファイル: eail_web_tc1.c プロジェクト: mknapinski/eail
static void
_do_test(AtkObject *obj)
{
   int child_count = 0;

   atk_object_set_description(obj, "test");
   g_assert_cmpstr(atk_object_get_description(obj), ==, "test");

   atk_object_set_name(obj, "test name");
   g_assert_cmpstr(atk_object_get_name(obj), ==, "test name");

   child_count =  atk_object_get_n_accessible_children(obj);
   g_assert(child_count == 0);

   eailu_test_atk_focus(obj, TRUE);

   _printf("DONE. All WEB tests passed successfully \n");
   eailu_test_code_called = 1;
}
コード例 #25
0
static void
_test_gengrid_object(AtkObject *obj)
{
   int child_count = atk_object_get_n_accessible_children(obj);
   int rows, cols, row_at_index, column_at_index, index_at;
   gboolean success;
   AtkTable *table;
   AtkObject *table_child;
   for (int i = 0; i < child_count; i++)
     {
        AtkObject *child = atk_object_ref_accessible_child(obj, i);
        _print_object_info(child);
        g_object_unref(child);
     }
   g_assert(ATK_IS_TABLE(obj));
   table = ATK_TABLE(obj);
   rows = atk_table_get_n_rows(table);
   g_assert(rows == 3);
   cols = atk_table_get_n_columns(table);
   g_assert(cols == 3);
   row_at_index = atk_table_get_row_at_index(table, 4);
   g_assert(row_at_index == 1);
   column_at_index = atk_table_get_column_at_index(table, 2);
   g_assert(column_at_index == 0);
   index_at = atk_table_get_index_at(table, 2, 2);
   g_assert(index_at == 8);
   table_child = atk_table_ref_at(table, 1, 1);
   g_assert(ATK_IS_OBJECT(table_child));
   _print_object_info(table_child);
   success = atk_table_add_column_selection(table, 1);
   g_assert(success);
   success =  atk_table_is_column_selected(table, 1);
   g_assert(success);
   success = atk_table_remove_column_selection(table, 1);
   g_assert(success);
   success = atk_table_add_row_selection(table, 1);
   g_assert(success);
   success = atk_table_is_row_selected(table, 1);
   g_assert(success);
   success = atk_table_remove_row_selection(table, 0);
   g_assert(success);

}
コード例 #26
0
static gint
my_atk_selection_get_selection_count (AtkSelection *selection)
{
  MyAtkSelection *self = MY_ATK_SELECTION(selection);
  if (!self)
    return FALSE;
  AtkObject *child = NULL;
  AtkStateSet *states = NULL;
  int i, ret=0;
  int childs = atk_object_get_n_accessible_children (ATK_OBJECT (selection));

  for (i=0; i<childs; i++) {
    child = atk_object_ref_accessible_child (ATK_OBJECT (selection), i);
    states = atk_object_ref_state_set (child);
    if (atk_state_set_contains_state (states, ATK_STATE_SELECTED))
      ret++;

  }
  return ret;
}
コード例 #27
0
ファイル: gailmenuitem.c プロジェクト: Aridna/gtk2
static void
menu_item_selection (GtkItem  *item,
                     gboolean selected)
{
  AtkObject *obj, *parent;
  gint i;

  obj = gtk_widget_get_accessible (GTK_WIDGET (item));
  atk_object_notify_state_change (obj, ATK_STATE_SELECTED, selected);

  for (i = 0; i < atk_object_get_n_accessible_children (obj); i++)
    {
      AtkObject *child;
      child = atk_object_ref_accessible_child (obj, i);
      atk_object_notify_state_change (child, ATK_STATE_SHOWING, selected);
      g_object_unref (child);
    }
  parent = atk_object_get_parent (obj);
  g_signal_emit_by_name (parent, "selection_changed"); 
}
コード例 #28
0
ファイル: testcombo.c プロジェクト: 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;
}
コード例 #29
0
static AtkObject*
my_atk_selection_ref_selection (AtkSelection *selection, gint no)
{
  MyAtkSelection *self = MY_ATK_SELECTION(selection);
  if (!self)
    return FALSE;
  AtkObject *child = NULL;
  AtkStateSet *states = NULL;
  GArray *array = g_array_new (FALSE, FALSE, sizeof (AtkObject *));
  int i;
  int childs = atk_object_get_n_accessible_children (ATK_OBJECT (selection));

  for (i=0; i<childs; i++) {
    child = atk_object_ref_accessible_child (ATK_OBJECT (selection), i);
    states = atk_object_ref_state_set (child);
    if (atk_state_set_contains_state (states, ATK_STATE_SELECTED))
      g_array_append_val (array, child);
  }

  return g_array_index (array, AtkObject *, no);
}
コード例 #30
0
ファイル: gailwindow.c プロジェクト: Aridna/gtk2
static gint
gail_window_get_index_in_parent (AtkObject *accessible)
{
  GtkWidget* widget = GTK_ACCESSIBLE (accessible)->widget; 
  AtkObject* atk_obj = atk_get_root ();
  gint index = -1;

  if (widget == NULL)
    /*
     * State is defunct
     */
    return -1;

  gail_return_val_if_fail (GTK_IS_WIDGET (widget), -1);

  index = ATK_OBJECT_CLASS (gail_window_parent_class)->get_index_in_parent (accessible);
  if (index != -1)
    return index;

  if (GTK_IS_WINDOW (widget))
    {
      GtkWindow *window = GTK_WINDOW (widget);
      if (GAIL_IS_TOPLEVEL (atk_obj))
        {
	  GailToplevel* toplevel = GAIL_TOPLEVEL (atk_obj);
	  index = g_list_index (toplevel->window_list, window);
	}
      else
        {
	  int i, sibling_count = atk_object_get_n_accessible_children (atk_obj);
	  for (i = 0; i < sibling_count && index == -1; ++i)
	    {
	      AtkObject *child = atk_object_ref_accessible_child (atk_obj, i);
	      if (accessible == child) index = i;
	      g_object_unref (G_OBJECT (child));
	    }
	}
    }
  return index;
}