* Boston, MA 02111-1307, USA.
*/
-#include "atkeditabletext.h"
-
+#include "config.h"
-struct _AtkEditableTextIfaceClass
-{
- GObjectClass parent;
-};
+#include "atkeditabletext.h"
-typedef struct _AtkEditableTextIfaceClass AtkEditableTextIfaceClass;
+/**
+ * SECTION:atkeditabletext
+ * @Short_description: The ATK interface implemented by components
+ * containing user-editable text content.
+ * @Title:AtkEditableText
+ *
+ * #AtkEditableText should be implemented by UI components which
+ * contain text which the user can edit, via the #AtkObject
+ * corresponding to that component (see #AtkObject).
+ *
+ * #AtkEditableText is a subclass of #AtkText, and as such, an object
+ * which implements #AtkEditableText is by definition an #AtkText
+ * implementor as well.
+ *
+ * See also: #AtkText
+ */
GType
-atk_editable_text_get_type ()
+atk_editable_text_get_type (void)
{
static GType type = 0;
static const GTypeInfo tinfo =
{
sizeof (AtkEditableTextIface),
- NULL,
- NULL,
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
};
return type;
}
-
/**
- *atk_editable_text_select_text:
+ *atk_editable_text_set_run_attributes:
*@text: an #AtkEditableText
- *@start_pos: start position
- *@end_pos: end position
+ *@attrib_set: an #AtkAttributeSet
+ *@start_offset: start of range in which to set attributes
+ *@end_offset: end of range in which to set attributes
*
- *Select text between @start_pos and @end_pos
- **/
-void
-atk_editable_text_select_text (AtkEditableText *text,
- gint start_pos,
- gint end_pos)
-{
- AtkEditableTextIface *iface;
-
- g_return_if_fail (text != NULL);
- g_return_if_fail (ATK_IS_EDITABLE_TEXT (text));
-
- iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
-
- if (iface->select_text)
- (*(iface->select_text)) (text, start_pos, end_pos);
-}
-
-/**
- *atk_editable_text_set_attributes:
- *@text: an #AtkEditableText
- *@start_pos: start position
- *@end_pos: end position
- *@attributes: a #PangoAttrList to set for @text
+ *Sets the attributes for a specified range. See the ATK_ATTRIBUTE
+ *macros (such as #ATK_ATTRIBUTE_LEFT_MARGIN) for examples of attributes
+ *that can be set. Note that other attributes that do not have corresponding
+ *ATK_ATTRIBUTE macros may also be set for certain text widgets.
*
- *Set attributes for text between @start_pos and @end_pos
+ *Returns: %TRUE if attributes successfully set for the specified
+ *range, otherwise %FALSE
**/
-void
-atk_editable_text_set_attributes (AtkEditableText *text,
- gint start_pos,
- gint end_pos,
- PangoAttrList *attributes)
+gboolean
+atk_editable_text_set_run_attributes (AtkEditableText *text,
+ AtkAttributeSet *attrib_set,
+ gint start_offset,
+ gint end_offset)
{
AtkEditableTextIface *iface;
- g_return_if_fail (text != NULL);
- g_return_if_fail (ATK_IS_EDITABLE_TEXT (text));
+ g_return_val_if_fail (ATK_IS_EDITABLE_TEXT (text), FALSE);
iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
- if (iface->set_attributes)
- (*(iface->set_attributes)) (text, start_pos, end_pos, attributes);
+ if (iface->set_run_attributes)
+ {
+ return (*(iface->set_run_attributes)) (text, attrib_set, start_offset, end_offset);
+ }
+ else
+ {
+ return FALSE;
+ }
}
+
/**
- *atk_editable_text_set_text_contents:
- *@text: an #AtkEditableText
- *@string: string to set for text contents of @text
+ * atk_editable_text_set_text_contents:
+ * @text: an #AtkEditableText
+ * @string: string to set for text contents of @text
*
- *Set text contents of @text
+ * Set text contents of @text.
**/
void
atk_editable_text_set_text_contents (AtkEditableText *text,
{
AtkEditableTextIface *iface;
- g_return_if_fail (text != NULL);
g_return_if_fail (ATK_IS_EDITABLE_TEXT (text));
iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
}
/**
- *atk_editable_text_insert_text:
- *@text: an #AtkEditableText
- *@string: a #gchar string to insert
- *@length: number of characters to insert @string
- *@position: position at which to insert @string
+ * atk_editable_text_insert_text:
+ * @text: an #AtkEditableText
+ * @string: the text to insert
+ * @length: the length of text to insert, in bytes
+ * @position: The caller initializes this to
+ * the position at which to insert the text. After the call it
+ * points at the position after the newly inserted text.
*
- *Insert @length characters of @string into text contents
- * of @text at position @position
+ * Insert text at a given position.
**/
void
atk_editable_text_insert_text (AtkEditableText *text,
{
AtkEditableTextIface *iface;
- g_return_if_fail (text != NULL);
g_return_if_fail (ATK_IS_EDITABLE_TEXT (text));
iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
}
/**
- *atk_editable_text_copy_text:
- *@text: an #AtkEditableText
- *@start_pos: start position
- *@end_pos: end position
+ * atk_editable_text_copy_text:
+ * @text: an #AtkEditableText
+ * @start_pos: start position
+ * @end_pos: end position
*
- * Copy text between @start_pos and @end_pos
+ * Copy text from @start_pos up to, but not including @end_pos
+ * to the clipboard.
**/
void
atk_editable_text_copy_text (AtkEditableText *text,
{
AtkEditableTextIface *iface;
- g_return_if_fail (text != NULL);
g_return_if_fail (ATK_IS_EDITABLE_TEXT (text));
iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
}
/**
- *atk_editable_text_cut_text:
- *@text: an #AtkEditableText
- *@start_pos: start position
- *@end_pos: end position
+ * atk_editable_text_cut_text:
+ * @text: an #AtkEditableText
+ * @start_pos: start position
+ * @end_pos: end position
*
- * Cut text between @start_pos and @end_pos
+ * Copy text from @start_pos up to, but not including @end_pos
+ * to the clipboard and then delete from the widget.
**/
void
atk_editable_text_cut_text (AtkEditableText *text,
{
AtkEditableTextIface *iface;
- g_return_if_fail (text != NULL);
g_return_if_fail (ATK_IS_EDITABLE_TEXT (text));
iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
}
/**
- *atk_editable_text_delete_text:
- *@text: an #AtkEditableText
- *@start_pos: start position
- *@end_pos: end position
+ * atk_editable_text_delete_text:
+ * @text: an #AtkEditableText
+ * @start_pos: start position
+ * @end_pos: end position
*
- * Delete text between @start_pos and @end_pos
+ * Delete text @start_pos up to, but not including @end_pos.
**/
void
atk_editable_text_delete_text (AtkEditableText *text,
{
AtkEditableTextIface *iface;
- g_return_if_fail (text != NULL);
g_return_if_fail (ATK_IS_EDITABLE_TEXT (text));
iface = ATK_EDITABLE_TEXT_GET_IFACE (text);
}
/**
- *atk_editable_text_paste_text:
- *@text: an #AtkEditableText
- *@position: position to paste
+ * atk_editable_text_paste_text:
+ * @text: an #AtkEditableText
+ * @position: position to paste
*
- * Paste text at @position
+ * Paste text from clipboard to specified @position.
**/
void
atk_editable_text_paste_text (AtkEditableText *text,
{
AtkEditableTextIface *iface;
- g_return_if_fail (text != NULL);
g_return_if_fail (ATK_IS_EDITABLE_TEXT (text));
iface = ATK_EDITABLE_TEXT_GET_IFACE (text);