X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=atk%2Fatkselection.c;h=d4bd8363ec27dabf3d8bdfb8e828417acbc0f99c;hb=refs%2Fheads%2Faccepted%2Ftizen_ivi;hp=2522bb65c325c4be4eeb3bdabe060a99acce566a;hpb=e5d4548d3f59062dd2b9923826ef86ac3b626524;p=platform%2Fupstream%2Fatk.git diff --git a/atk/atkselection.c b/atk/atkselection.c index 2522bb6..d4bd836 100755 --- a/atk/atkselection.c +++ b/atk/atkselection.c @@ -17,10 +17,40 @@ * Boston, MA 02111-1307, USA. */ +#include "config.h" + #include "atkselection.h" +/** + * SECTION:atkselection + * @Short_description: The ATK interface implemented by container + * objects whose #AtkObject children can be selected. + * @Title:AtkSelection + * + * #AtkSelection should be implemented by UI components with children + * which are exposed by #atk_object_ref_child and + * #atk_object_get_n_children, if the use of the parent UI component + * ordinarily involves selection of one or more of the objects + * corresponding to those #AtkObject children - for example, + * selectable lists. + * + * Note that other types of "selection" (for instance text selection) + * are accomplished a other ATK interfaces - #AtkSelection is limited + * to the selection/deselection of children. + */ + + +enum { + SELECTION_CHANGED, + LAST_SIGNAL +}; + +static void atk_selection_base_init (gpointer *g_class); + +static guint atk_selection_signals[LAST_SIGNAL] = { 0 }; + GType -atk_selection_get_type () +atk_selection_get_type (void) { static GType type = 0; @@ -28,8 +58,8 @@ atk_selection_get_type () GTypeInfo tinfo = { sizeof (AtkSelectionIface), - NULL, - NULL, + (GBaseInitFunc)atk_selection_base_init, + (GBaseFinalizeFunc) NULL, }; @@ -39,64 +69,100 @@ atk_selection_get_type () return type; } +static void +atk_selection_base_init (gpointer *g_class) +{ + static gboolean initialized = FALSE; + + if (! initialized) + { + /** + * AtkSelection::selection-changed: + * @atkselection: the object which received the signal. + * + * The "selection-changed" signal is emitted by an object which + * implements AtkSelection interface when the selection changes. + */ + atk_selection_signals[SELECTION_CHANGED] = + g_signal_new ("selection_changed", + ATK_TYPE_SELECTION, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (AtkSelectionIface, selection_changed), + (GSignalAccumulator) NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + + initialized = TRUE; + } +} + /** * atk_selection_add_selection: - * @selection: a GObject instance that implements AtkSelectionIface - * @i: a #gint specifying an accessible child of @selection + * @selection: a #GObject instance that implements AtkSelectionIface + * @i: a #gint specifying the child index. * * Adds the specified accessible child of the object to the * object's selection. + * + * Returns: TRUE if success, FALSE otherwise. **/ -void +gboolean atk_selection_add_selection (AtkSelection *obj, gint i) { AtkSelectionIface *iface; - g_return_if_fail (obj != NULL); - g_return_if_fail (ATK_IS_SELECTION (obj)); + g_return_val_if_fail (ATK_IS_SELECTION (obj), FALSE); iface = ATK_SELECTION_GET_IFACE (obj); if (iface->add_selection) - (iface->add_selection) (obj, i); + return (iface->add_selection) (obj, i); + else + return FALSE; } /** * atk_selection_clear_selection: - * @selection: a GObject instance that implements AtkSelectionIface + * @selection: a #GObject instance that implements AtkSelectionIface * * Clears the selection in the object so that no children in the object * are selected. + * + * Returns: TRUE if success, FALSE otherwise. **/ -void +gboolean atk_selection_clear_selection (AtkSelection *obj) { AtkSelectionIface *iface; - g_return_if_fail (obj != NULL); - g_return_if_fail (ATK_IS_SELECTION (obj)); + g_return_val_if_fail (ATK_IS_SELECTION (obj), FALSE); iface = ATK_SELECTION_GET_IFACE (obj); if (iface->clear_selection) - (iface->clear_selection) (obj); + return (iface->clear_selection) (obj); + else + return FALSE; } /** * atk_selection_ref_selection: - * @selection: a GObject instance that implements AtkSelectionIface - * @i: a #gint specifying an accessible child of @selection + * @selection: a #GObject instance that implements AtkSelectionIface + * @i: a #gint specifying the index in the selection set. (e.g. the + * ith selection as opposed to the ith child). * * Gets a reference to the accessible object representing the specified - * selected * child of the object. + * selected child of the object. * Note: callers should not rely on %NULL or on a zero value for * indication of whether AtkSelectionIface is implemented, they should * use type checking/interface checking macros or the * atk_get_accessible_value() convenience method. * - * Returns: a AtkObject* representing the selected accessible , or NULL - * if value does not implement this interface. + * Returns: (nullable) (transfer full): an #AtkObject representing the + * selected accessible, or %NULL if @selection does not implement this + * interface. **/ AtkObject* atk_selection_ref_selection (AtkSelection *obj, @@ -104,7 +170,6 @@ atk_selection_ref_selection (AtkSelection *obj, { AtkSelectionIface *iface; - g_return_val_if_fail (obj != NULL, NULL); g_return_val_if_fail (ATK_IS_SELECTION (obj), NULL); iface = ATK_SELECTION_GET_IFACE (obj); @@ -117,7 +182,7 @@ atk_selection_ref_selection (AtkSelection *obj, /** * atk_selection_get_selection_count: - * @selection: a GObject instance that implements AtkSelectionIface + * @selection: a #GObject instance that implements AtkSelectionIface * * Gets the number of accessible children currently selected. * Note: callers should not rely on %NULL or on a zero value for @@ -126,14 +191,13 @@ atk_selection_ref_selection (AtkSelection *obj, * atk_get_accessible_value() convenience method. * * Returns: a gint representing the number of items selected, or 0 - * if value does not implement this interface. + * if @selection does not implement this interface. **/ gint atk_selection_get_selection_count (AtkSelection *obj) { AtkSelectionIface *iface; - g_return_val_if_fail (obj != NULL, 0); g_return_val_if_fail (ATK_IS_SELECTION (obj), 0); iface = ATK_SELECTION_GET_IFACE (obj); @@ -146,8 +210,8 @@ atk_selection_get_selection_count (AtkSelection *obj) /** * atk_selection_is_child_selected: - * @selection: a GObject instance that implements AtkSelectionIface - * @i: a #gint specifying an accessible child of @selection + * @selection: a #GObject instance that implements AtkSelectionIface + * @i: a #gint specifying the child index. * * Determines if the current child of this object is selected * Note: callers should not rely on %NULL or on a zero value for @@ -156,7 +220,7 @@ atk_selection_get_selection_count (AtkSelection *obj) * atk_get_accessible_value() convenience method. * * Returns: a gboolean representing the specified child is selected, or 0 - * if value does not implement this interface. + * if @selection does not implement this interface. **/ gboolean atk_selection_is_child_selected (AtkSelection *obj, @@ -164,7 +228,6 @@ atk_selection_is_child_selected (AtkSelection *obj, { AtkSelectionIface *iface; - g_return_val_if_fail (obj != NULL, FALSE); g_return_val_if_fail (ATK_IS_SELECTION (obj), FALSE); iface = ATK_SELECTION_GET_IFACE (obj); @@ -177,43 +240,50 @@ atk_selection_is_child_selected (AtkSelection *obj, /** * atk_selection_remove_selection: - * @selection: a GObject instance that implements AtkSelectionIface - * @i: a #gint specifying an accessible child of @selection + * @selection: a #GObject instance that implements AtkSelectionIface + * @i: a #gint specifying the index in the selection set. (e.g. the + * ith selection as opposed to the ith child). * * Removes the specified child of the object from the object's selection. + * + * Returns: TRUE if success, FALSE otherwise. **/ -void +gboolean atk_selection_remove_selection (AtkSelection *obj, gint i) { AtkSelectionIface *iface; - g_return_if_fail (obj != NULL); - g_return_if_fail (ATK_IS_SELECTION (obj)); + g_return_val_if_fail (ATK_IS_SELECTION (obj), FALSE); iface = ATK_SELECTION_GET_IFACE (obj); if (iface->remove_selection) - (iface->remove_selection) (obj, i); + return (iface->remove_selection) (obj, i); + else + return FALSE; } /** * atk_selection_select_all_selection: - * @selection: a GObject instance that implements AtkSelectionIface + * @selection: a #GObject instance that implements AtkSelectionIface * * Causes every child of the object to be selected if the object * supports multiple selections. + * + * Returns: TRUE if success, FALSE otherwise. **/ -void +gboolean atk_selection_select_all_selection (AtkSelection *obj) { AtkSelectionIface *iface; - g_return_if_fail (obj != NULL); - g_return_if_fail (ATK_IS_SELECTION (obj)); + g_return_val_if_fail (ATK_IS_SELECTION (obj), FALSE); iface = ATK_SELECTION_GET_IFACE (obj); if (iface->select_all_selection) - (iface->select_all_selection) (obj); + return (iface->select_all_selection) (obj); + else + return FALSE; }