* AT-SPI - Assistive Technology Service Provider Interface
* (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
*
- * Copyright 2001 Sun Microsystems Inc.
+ * Copyright 2001, 2002 Sun Microsystems Inc.,
+ * Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
g_return_val_if_fail (selection != NULL, 0);
- return (CORBA_long) atk_selection_get_selection_count (selection);
+ return atk_selection_get_selection_count (selection);
}
#endif
atk_object = atk_selection_ref_selection (selection,
- (gint) selectedChildIndex);
+ selectedChildIndex);
g_return_val_if_fail (ATK_IS_OBJECT (atk_object), CORBA_OBJECT_NIL);
g_return_val_if_fail (selection != NULL, FALSE);
- return (CORBA_boolean)
- atk_selection_add_selection (selection, (gint) childIndex);
+ return atk_selection_add_selection (selection, childIndex);
}
g_return_val_if_fail (selection != NULL, FALSE);
- return (CORBA_boolean)
- atk_selection_remove_selection (selection, (gint) selectedChildIndex);
+ return atk_selection_remove_selection (selection, selectedChildIndex);
+}
+
+
+
+static CORBA_boolean
+impl_deselectChild (PortableServer_Servant servant,
+ const CORBA_long selectedChildIndex,
+ CORBA_Environment *ev)
+{
+ AtkSelection *selection = get_selection_from_servant (servant);
+ gint i, nselected;
+
+ g_return_val_if_fail (selection != NULL, FALSE);
+ nselected = atk_selection_get_selection_count (selection);
+ for (i=0; i<nselected; ++i)
+ {
+ AtkObject *selected_obj = atk_selection_ref_selection (selection, i);
+ if (atk_object_get_index_in_parent (selected_obj) == selectedChildIndex)
+ {
+ g_object_unref (G_OBJECT (selected_obj));
+ return atk_selection_remove_selection (selection, i);
+ }
+ g_object_unref (G_OBJECT (selected_obj));
+ }
+ return FALSE;
}
g_return_val_if_fail (selection != NULL, FALSE);
- return (CORBA_boolean)
- atk_selection_is_child_selected (selection, (gint) childIndex);
+ return atk_selection_is_child_selected (selection, childIndex);
}
-static void
+static CORBA_boolean
impl_selectAll (PortableServer_Servant servant,
CORBA_Environment *ev)
{
AtkSelection *selection = get_selection_from_servant (servant);
- g_return_if_fail (selection != NULL);
+ g_return_val_if_fail (selection != NULL, FALSE);
+
+ return atk_selection_select_all_selection (selection);
- atk_selection_select_all_selection (selection);
}
-static void
+static CORBA_boolean
impl_clearSelection (PortableServer_Servant servant,
CORBA_Environment *ev)
{
AtkSelection *selection = get_selection_from_servant (servant);
- g_return_if_fail (selection != NULL);
+ g_return_val_if_fail (selection != NULL, FALSE);
- atk_selection_clear_selection (selection);
+ return atk_selection_clear_selection (selection);
}
epv->getSelectedChild = impl_getSelectedChild;
epv->selectChild = impl_selectChild;
epv->deselectSelectedChild = impl_deselectSelectedChild;
+ epv->deselectChild = impl_deselectChild;
epv->isChildSelected = impl_isChildSelected;
epv->selectAll = impl_selectAll;
epv->clearSelection = impl_clearSelection;
BONOBO_TYPE_FUNC_FULL (SpiSelection,
Accessibility_Selection,
SPI_TYPE_BASE,
- spi_selection);
+ spi_selection)