}
static DBusMessage *
+impl_getCharacterAtOffset (DBusConnection * bus, DBusMessage * message,
+ void *user_data)
+{
+ AtkText *text = get_text (message);
+ dbus_int32_t offset;
+ dbus_int32_t ch;
+ DBusError error;
+ DBusMessage *reply;
+
+ if (!text)
+ return spi_dbus_general_error (message);
+ dbus_error_init (&error);
+ if (!dbus_message_get_args
+ (message, &error, DBUS_TYPE_INT32, &offset, DBUS_TYPE_INVALID))
+ {
+ return SPI_DBUS_RETURN_ERROR (message, &error);
+ }
+ ch = atk_text_get_character_at_offset (text, offset);
+ reply = dbus_message_new_method_return (message);
+ if (reply)
+ {
+ dbus_message_append_args (reply, DBUS_TYPE_INT32, &ch, DBUS_TYPE_INVALID);
+ }
+ return reply;
+}
+
+static DBusMessage *
impl_getAttributeValue (DBusConnection * bus, DBusMessage * message,
void *user_data)
{
{
AtkText *text = get_text (message);
dbus_int32_t offset;
- dbus_uint32_t coordType;
+ dbus_int16_t coordType;
dbus_int32_t x, y, width, height;
gint ix = 0, iy = 0, iw = 0, ih = 0;
DBusError error;
return spi_dbus_general_error (message);
dbus_error_init (&error);
if (!dbus_message_get_args
- (message, &error, DBUS_TYPE_INT32, &offset, DBUS_TYPE_INT32, &coordType,
+ (message, &error, DBUS_TYPE_INT32, &offset, DBUS_TYPE_INT16, &coordType,
DBUS_TYPE_INVALID))
{
return SPI_DBUS_RETURN_ERROR (message, &error);
{
AtkText *text = get_text (message);
dbus_int32_t x, y;
- dbus_uint32_t coordType;
+ dbus_int16_t coordType;
dbus_int32_t rv;
DBusError error;
DBusMessage *reply;
dbus_error_init (&error);
if (!dbus_message_get_args
(message, &error, DBUS_TYPE_INT32, &x, DBUS_TYPE_INT32, &y,
- DBUS_TYPE_UINT32, &coordType, DBUS_TYPE_INVALID))
+ DBUS_TYPE_INT16, &coordType, DBUS_TYPE_INVALID))
{
return SPI_DBUS_RETURN_ERROR (message, &error);
}
{
AtkText *text = get_text (message);
dbus_int32_t startOffset, endOffset;
- dbus_uint32_t coordType;
+ dbus_int16_t coordType;
AtkTextRectangle rect;
dbus_int32_t x, y, width, height;
DBusError error;
dbus_error_init (&error);
if (!dbus_message_get_args
(message, &error, DBUS_TYPE_INT32, &startOffset, DBUS_TYPE_INT32,
- &endOffset, DBUS_TYPE_UINT32, &coordType, DBUS_TYPE_INVALID))
+ &endOffset, DBUS_TYPE_INT16, &coordType, DBUS_TYPE_INVALID))
{
return SPI_DBUS_RETURN_ERROR (message, &error);
}
{
AtkText *text = get_text (message);
dbus_int32_t x, y, width, height;
- dbus_uint32_t coordType, xClipType, yClipType;
+ dbus_int16_t coordType, xClipType, yClipType;
DBusError error;
AtkTextRange **range_list = NULL;
AtkTextRectangle rect;
if (attributes)
n_attributes = g_slist_length (attributes);
- retval = (char **) malloc (n_attributes * sizeof (char *));
+ retval = g_new (char *, n_attributes);
for (i = 0; i < n_attributes; ++i)
{
{impl_getTextBeforeOffset, "getTextBeforeOffset"},
{impl_getTextAtOffset, "getTextAtOffset"},
{impl_getTextAfterOffset, "getTextAfterOffset"},
+ {impl_getCharacterAtOffset, "getCharacterAtOffset"},
{impl_getAttributeValue, "getAttributeValue"},
{impl_getAttributes, "getAttributes"},
{impl_getDefaultAttributes, "getDefaultAttributes"},
void
spi_initialize_text (DRouteData * data)
{
- droute_add_interface (data, "org.freedesktop.atspi.Text", methods,
+ droute_add_interface (data, SPI_DBUS_INTERFACE_TEXT, methods,
properties,
(DRouteGetDatumFunction) get_text_from_path, NULL);
};