* 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;
GTypeInfo tinfo =
{
sizeof (AtkSelectionIface),
- (GBaseInitFunc) NULL,
+ (GBaseInitFunc)atk_selection_base_init,
(GBaseFinalizeFunc) NULL,
};
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
{
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);
{
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);
* 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: (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,
{
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);
{
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);
{
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);
{
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);
*
* 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;
}