X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=atk%2Fatkselection.c;h=c324a4a3271faf73242a9e57c6bcc58391ed74f4;hb=193abeb56fa98b00be30a334f1a76605013fe230;hp=4532ff480d4d8f7b7b7bb81bd345fd9af6294e2c;hpb=a992d1ec4bd948b359a63efc6d5e0358a1ceef26;p=platform%2Fupstream%2Fatk.git diff --git a/atk/atkselection.c b/atk/atkselection.c index 4532ff4..c324a4a 100755 --- a/atk/atkselection.c +++ b/atk/atkselection.c @@ -19,8 +19,36 @@ #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,7 +56,7 @@ atk_selection_get_type () GTypeInfo tinfo = { sizeof (AtkSelectionIface), - (GBaseInitFunc) NULL, + (GBaseInitFunc)atk_selection_base_init, (GBaseFinalizeFunc) NULL, }; @@ -39,10 +67,38 @@ 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 + * @i: a #gint specifying the child index. * * Adds the specified accessible child of the object to the * object's selection. @@ -55,7 +111,6 @@ atk_selection_add_selection (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); @@ -80,7 +135,6 @@ atk_selection_clear_selection (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); @@ -94,7 +148,8 @@ atk_selection_clear_selection (AtkSelection *obj) /** * atk_selection_ref_selection: * @selection: a #GObject instance that implements AtkSelectionIface - * @i: a #gint specifying an accessible child of @selection + * @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. @@ -103,8 +158,8 @@ atk_selection_clear_selection (AtkSelection *obj) * use type checking/interface checking macros or the * atk_get_accessible_value() convenience method. * - * Returns: an #AtkObject representing the selected accessible , or %NULL - * if @selection does not implement this interface. + * Returns: (transfer full): an #AtkObject representing the selected + * accessible , or %NULL if @selection does not implement this interface. **/ AtkObject* atk_selection_ref_selection (AtkSelection *obj, @@ -112,7 +167,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); @@ -141,7 +195,6 @@ 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); @@ -155,7 +208,7 @@ 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 + * @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 @@ -172,7 +225,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); @@ -186,7 +238,8 @@ 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 + * @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. * @@ -198,7 +251,6 @@ atk_selection_remove_selection (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); @@ -215,17 +267,20 @@ atk_selection_remove_selection (AtkSelection *obj, * * 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; }