X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=atk-adaptor%2Ftext-adaptor.c;h=de91f6b15e1931478ea43406e8868e0e900f5282;hb=5d374cf95f2447a712f94dd2efe2b294ecab58ca;hp=7c8821194a88cd543635d7def07e20495f273b5d;hpb=dfc071dcf2f98f282616911cb0eb1636c93f3e77;p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git diff --git a/atk-adaptor/text-adaptor.c b/atk-adaptor/text-adaptor.c index 7c88211..de91f6b 100644 --- a/atk-adaptor/text-adaptor.c +++ b/atk-adaptor/text-adaptor.c @@ -27,11 +27,11 @@ #include #include -#include "spi-common/spi-dbus.h" +#include "common/spi-dbus.h" static dbus_bool_t impl_get_characterCount (DBusMessageIter * iter, - void *user_data) + void *user_data) { AtkText *text = (AtkText *) user_data; g_return_val_if_fail (ATK_IS_TEXT (user_data), FALSE); @@ -40,7 +40,7 @@ impl_get_characterCount (DBusMessageIter * iter, static dbus_bool_t impl_get_caretOffset (DBusMessageIter * iter, - void *user_data) + void *user_data) { AtkText *text = (AtkText *) user_data; g_return_val_if_fail (ATK_IS_TEXT (user_data), FALSE); @@ -63,7 +63,7 @@ impl_getText (DBusConnection * bus, DBusMessage * message, void *user_data) (message, &error, DBUS_TYPE_INT32, &startOffset, DBUS_TYPE_INT32, &endOffset, DBUS_TYPE_INVALID)) { - return SPI_DBUS_RETURN_ERROR (message, &error); + return droute_invalid_arguments_error (message); } txt = atk_text_get_text (text, startOffset, endOffset); if (!txt) @@ -72,7 +72,7 @@ impl_getText (DBusConnection * bus, DBusMessage * message, void *user_data) if (reply) { dbus_message_append_args (reply, DBUS_TYPE_STRING, &txt, - DBUS_TYPE_INVALID); + DBUS_TYPE_INVALID); } g_free (txt); return reply; @@ -80,7 +80,7 @@ impl_getText (DBusConnection * bus, DBusMessage * message, void *user_data) static DBusMessage * impl_setCaretOffset (DBusConnection * bus, DBusMessage * message, - void *user_data) + void *user_data) { AtkText *text = (AtkText *) user_data; dbus_int32_t offset; @@ -94,21 +94,21 @@ impl_setCaretOffset (DBusConnection * bus, DBusMessage * message, if (!dbus_message_get_args (message, &error, DBUS_TYPE_INT32, &offset, DBUS_TYPE_INVALID)) { - return SPI_DBUS_RETURN_ERROR (message, &error); + return droute_invalid_arguments_error (message); } rv = atk_text_set_caret_offset (text, offset); reply = dbus_message_new_method_return (message); if (reply) { dbus_message_append_args (reply, DBUS_TYPE_BOOLEAN, &rv, - DBUS_TYPE_INVALID); + DBUS_TYPE_INVALID); } return reply; } static DBusMessage * impl_getTextBeforeOffset (DBusConnection * bus, DBusMessage * message, - void *user_data) + void *user_data) { AtkText *text = (AtkText *) user_data; dbus_int32_t offset; @@ -126,11 +126,11 @@ impl_getTextBeforeOffset (DBusConnection * bus, DBusMessage * message, (message, &error, DBUS_TYPE_INT32, &offset, DBUS_TYPE_UINT32, &type, DBUS_TYPE_INVALID)) { - return SPI_DBUS_RETURN_ERROR (message, &error); + return droute_invalid_arguments_error (message); } txt = atk_text_get_text_before_offset (text, offset, (AtkTextBoundary) type, - &intstart_offset, &intend_offset); + &intstart_offset, &intend_offset); startOffset = intstart_offset; endOffset = intend_offset; if (!txt) @@ -138,9 +138,9 @@ impl_getTextBeforeOffset (DBusConnection * bus, DBusMessage * message, reply = dbus_message_new_method_return (message); if (reply) { - dbus_message_append_args (reply, DBUS_TYPE_INT32, &startOffset, - DBUS_TYPE_INT32, &endOffset, DBUS_TYPE_STRING, - &txt, DBUS_TYPE_INVALID); + dbus_message_append_args (reply, DBUS_TYPE_STRING, &txt, DBUS_TYPE_INT32, + &startOffset, DBUS_TYPE_INT32, &endOffset, + DBUS_TYPE_INVALID); } g_free (txt); return reply; @@ -148,7 +148,7 @@ impl_getTextBeforeOffset (DBusConnection * bus, DBusMessage * message, static DBusMessage * impl_getTextAtOffset (DBusConnection * bus, DBusMessage * message, - void *user_data) + void *user_data) { AtkText *text = (AtkText *) user_data; dbus_int32_t offset, type; @@ -165,11 +165,11 @@ impl_getTextAtOffset (DBusConnection * bus, DBusMessage * message, (message, &error, DBUS_TYPE_INT32, &offset, DBUS_TYPE_UINT32, &type, DBUS_TYPE_INVALID)) { - return SPI_DBUS_RETURN_ERROR (message, &error); + return droute_invalid_arguments_error (message); } txt = atk_text_get_text_at_offset (text, offset, (AtkTextBoundary) type, - &intstart_offset, &intend_offset); + &intstart_offset, &intend_offset); startOffset = intstart_offset; endOffset = intend_offset; if (!txt) @@ -177,9 +177,9 @@ impl_getTextAtOffset (DBusConnection * bus, DBusMessage * message, reply = dbus_message_new_method_return (message); if (reply) { - dbus_message_append_args (reply, DBUS_TYPE_INT32, &startOffset, - DBUS_TYPE_INT32, &endOffset, DBUS_TYPE_STRING, - &txt, DBUS_TYPE_INVALID); + dbus_message_append_args (reply, DBUS_TYPE_STRING, &txt, DBUS_TYPE_INT32, + &startOffset, DBUS_TYPE_INT32, &endOffset, + DBUS_TYPE_INVALID); } g_free (txt); return reply; @@ -187,7 +187,7 @@ impl_getTextAtOffset (DBusConnection * bus, DBusMessage * message, static DBusMessage * impl_getTextAfterOffset (DBusConnection * bus, DBusMessage * message, - void *user_data) + void *user_data) { AtkText *text = (AtkText *) user_data; dbus_int32_t offset; @@ -205,11 +205,11 @@ impl_getTextAfterOffset (DBusConnection * bus, DBusMessage * message, (message, &error, DBUS_TYPE_INT32, &offset, DBUS_TYPE_UINT32, &type, DBUS_TYPE_INVALID)) { - return SPI_DBUS_RETURN_ERROR (message, &error); + return droute_invalid_arguments_error (message); } txt = atk_text_get_text_after_offset (text, offset, (AtkTextBoundary) type, - &intstart_offset, &intend_offset); + &intstart_offset, &intend_offset); startOffset = intstart_offset; endOffset = intend_offset; if (!txt) @@ -217,9 +217,9 @@ impl_getTextAfterOffset (DBusConnection * bus, DBusMessage * message, reply = dbus_message_new_method_return (message); if (reply) { - dbus_message_append_args (reply, DBUS_TYPE_INT32, &startOffset, - DBUS_TYPE_INT32, &endOffset, DBUS_TYPE_STRING, - &txt, DBUS_TYPE_INVALID); + dbus_message_append_args (reply, DBUS_TYPE_STRING, &txt, DBUS_TYPE_INT32, + &startOffset, DBUS_TYPE_INT32, &endOffset, + DBUS_TYPE_INVALID); } g_free (txt); return reply; @@ -227,7 +227,7 @@ impl_getTextAfterOffset (DBusConnection * bus, DBusMessage * message, static DBusMessage * impl_getCharacterAtOffset (DBusConnection * bus, DBusMessage * message, - void *user_data) + void *user_data) { AtkText *text = (AtkText *) user_data; dbus_int32_t offset; @@ -241,7 +241,7 @@ impl_getCharacterAtOffset (DBusConnection * bus, DBusMessage * message, if (!dbus_message_get_args (message, &error, DBUS_TYPE_INT32, &offset, DBUS_TYPE_INVALID)) { - return SPI_DBUS_RETURN_ERROR (message, &error); + return droute_invalid_arguments_error (message); } ch = atk_text_get_character_at_offset (text, offset); reply = dbus_message_new_method_return (message); @@ -254,7 +254,7 @@ impl_getCharacterAtOffset (DBusConnection * bus, DBusMessage * message, static DBusMessage * impl_getAttributeValue (DBusConnection * bus, DBusMessage * message, - void *user_data) + void *user_data) { AtkText *text = (AtkText *) user_data; dbus_int32_t offset; @@ -262,7 +262,7 @@ impl_getAttributeValue (DBusConnection * bus, DBusMessage * message, dbus_int32_t startOffset, endOffset; dbus_bool_t defined; gint intstart_offset = 0, intend_offset = 0; - char *rv; + char *rv = NULL; DBusError error; DBusMessage *reply; AtkAttributeSet *set; @@ -276,11 +276,11 @@ impl_getAttributeValue (DBusConnection * bus, DBusMessage * message, (message, &error, DBUS_TYPE_INT32, &offset, DBUS_TYPE_STRING, &attributeName, DBUS_TYPE_INVALID)) { - return SPI_DBUS_RETURN_ERROR (message, &error); + return droute_invalid_arguments_error (message); } set = atk_text_get_run_attributes (text, offset, - &intstart_offset, &intend_offset); + &intstart_offset, &intend_offset); startOffset = intstart_offset; endOffset = intend_offset; defined = FALSE; @@ -289,11 +289,11 @@ impl_getAttributeValue (DBusConnection * bus, DBusMessage * message, { at = (AtkAttribute *) cur_attr->data; if (!strcmp (at->name, attributeName)) - { - rv = at->value; - defined = TRUE; - break; - } + { + rv = at->value; + defined = TRUE; + break; + } cur_attr = cur_attr->next; } if (!rv) @@ -301,10 +301,9 @@ impl_getAttributeValue (DBusConnection * bus, DBusMessage * message, reply = dbus_message_new_method_return (message); if (reply) { - dbus_message_append_args (reply, DBUS_TYPE_INT32, &startOffset, - DBUS_TYPE_INT32, &endOffset, - DBUS_TYPE_BOOLEAN, &defined, DBUS_TYPE_STRING, - &rv, DBUS_TYPE_INVALID); + dbus_message_append_args (reply, DBUS_TYPE_STRING, &rv, DBUS_TYPE_INT32, + &startOffset, DBUS_TYPE_INT32, &endOffset, + DBUS_TYPE_BOOLEAN, &defined, DBUS_TYPE_INVALID); } atk_attribute_set_free (set); return reply; @@ -323,9 +322,9 @@ _string_from_attribute_set (AtkAttributeSet * set) { at = (AtkAttribute *) cur_attr->data; tmp = g_strdup_printf ("%s%s:%s%s", - ((GSList *) (set) == cur_attr) ? "" : " ", - at->name, at->value, - (cur_attr->next) ? ";" : ""); + ((GSList *) (set) == cur_attr) ? "" : " ", + at->name, at->value, + (cur_attr->next) ? ";" : ""); tmp2 = g_strconcat (attributes, tmp, NULL); g_free (tmp); g_free (attributes); @@ -337,16 +336,16 @@ _string_from_attribute_set (AtkAttributeSet * set) static DBusMessage * impl_getAttributes (DBusConnection * bus, DBusMessage * message, - void *user_data) + void *user_data) { AtkText *text = (AtkText *) user_data; dbus_int32_t offset; dbus_int32_t startOffset, endOffset; gint intstart_offset, intend_offset; - char *rv; DBusError error; DBusMessage *reply; AtkAttributeSet *set; + DBusMessageIter iter; g_return_val_if_fail (ATK_IS_TEXT (user_data), droute_not_yet_handled_error (message)); @@ -354,61 +353,58 @@ impl_getAttributes (DBusConnection * bus, DBusMessage * message, if (!dbus_message_get_args (message, &error, DBUS_TYPE_INT32, &offset, DBUS_TYPE_INVALID)) { - return SPI_DBUS_RETURN_ERROR (message, &error); + return droute_invalid_arguments_error (message); } set = atk_text_get_run_attributes (text, offset, - &intstart_offset, &intend_offset); - - rv = _string_from_attribute_set (set); + &intstart_offset, &intend_offset); startOffset = intstart_offset; endOffset = intend_offset; reply = dbus_message_new_method_return (message); if (reply) { - dbus_message_append_args (reply, DBUS_TYPE_STRING, &rv, DBUS_TYPE_INT32, &startOffset, - DBUS_TYPE_INT32, &endOffset, DBUS_TYPE_INVALID); + dbus_message_iter_init_append (reply, &iter); + spi_atk_append_attribute_set (&iter, set); + dbus_message_append_args (reply, DBUS_TYPE_INT32, &startOffset, + DBUS_TYPE_INT32, &endOffset, DBUS_TYPE_INVALID); } atk_attribute_set_free (set); - g_free(rv); return reply; } static DBusMessage * impl_getDefaultAttributes (DBusConnection * bus, DBusMessage * message, - void *user_data) + void *user_data) { AtkText *text = (AtkText *) user_data; - char *rv; DBusError error; DBusMessage *reply; AtkAttributeSet *set; + DBusMessageIter iter; g_return_val_if_fail (ATK_IS_TEXT (user_data), droute_not_yet_handled_error (message)); dbus_error_init (&error); set = atk_text_get_default_attributes (text); - rv = _string_from_attribute_set (set); reply = dbus_message_new_method_return (message); if (reply) { - dbus_message_append_args (reply, DBUS_TYPE_STRING, &rv, - DBUS_TYPE_INVALID); + dbus_message_iter_init_append (reply, &iter); + spi_atk_append_attribute_set (&iter, set); } - g_free (rv); atk_attribute_set_free (set); return reply; } static DBusMessage * impl_getCharacterExtents (DBusConnection * bus, DBusMessage * message, - void *user_data) + void *user_data) { AtkText *text = (AtkText *) user_data; dbus_int32_t offset; - dbus_int16_t coordType; + dbus_uint32_t coordType; dbus_int32_t x, y, width, height; gint ix = 0, iy = 0, iw = 0, ih = 0; DBusError error; @@ -418,13 +414,13 @@ impl_getCharacterExtents (DBusConnection * bus, DBusMessage * message, droute_not_yet_handled_error (message)); dbus_error_init (&error); if (!dbus_message_get_args - (message, &error, DBUS_TYPE_INT32, &offset, DBUS_TYPE_INT16, &coordType, + (message, &error, DBUS_TYPE_INT32, &offset, DBUS_TYPE_UINT32, &coordType, DBUS_TYPE_INVALID)) { - return SPI_DBUS_RETURN_ERROR (message, &error); + return droute_invalid_arguments_error (message); } atk_text_get_character_extents (text, offset, &ix, &iy, &iw, &ih, - (AtkCoordType) coordType); + (AtkCoordType) coordType); x = ix; y = iy; width = iw; @@ -433,19 +429,19 @@ impl_getCharacterExtents (DBusConnection * bus, DBusMessage * message, if (reply) { dbus_message_append_args (reply, DBUS_TYPE_INT32, &x, DBUS_TYPE_INT32, - &y, DBUS_TYPE_INT32, &width, DBUS_TYPE_INT32, - &height, DBUS_TYPE_INVALID); + &y, DBUS_TYPE_INT32, &width, DBUS_TYPE_INT32, + &height, DBUS_TYPE_INVALID); } return reply; } static DBusMessage * impl_getOffsetAtPoint (DBusConnection * bus, DBusMessage * message, - void *user_data) + void *user_data) { AtkText *text = (AtkText *) user_data; dbus_int32_t x, y; - dbus_int16_t coordType; + dbus_uint32_t coordType; dbus_int32_t rv; DBusError error; DBusMessage *reply; @@ -455,23 +451,23 @@ impl_getOffsetAtPoint (DBusConnection * bus, DBusMessage * message, dbus_error_init (&error); if (!dbus_message_get_args (message, &error, DBUS_TYPE_INT32, &x, DBUS_TYPE_INT32, &y, - DBUS_TYPE_INT16, &coordType, DBUS_TYPE_INVALID)) + DBUS_TYPE_UINT32, &coordType, DBUS_TYPE_INVALID)) { - return SPI_DBUS_RETURN_ERROR (message, &error); + return droute_invalid_arguments_error (message); } rv = atk_text_get_offset_at_point (text, x, y, coordType); reply = dbus_message_new_method_return (message); if (reply) { dbus_message_append_args (reply, DBUS_TYPE_INT32, &rv, - DBUS_TYPE_INVALID); + DBUS_TYPE_INVALID); } return reply; } static DBusMessage * impl_getNSelections (DBusConnection * bus, DBusMessage * message, - void *user_data) + void *user_data) { AtkText *text = (AtkText *) user_data; dbus_int32_t rv; @@ -484,14 +480,14 @@ impl_getNSelections (DBusConnection * bus, DBusMessage * message, if (reply) { dbus_message_append_args (reply, DBUS_TYPE_INT32, &rv, - DBUS_TYPE_INVALID); + DBUS_TYPE_INVALID); } return reply; } static DBusMessage * impl_getSelection (DBusConnection * bus, DBusMessage * message, - void *user_data) + void *user_data) { AtkText *text = (AtkText *) user_data; dbus_int32_t selectionNum; @@ -506,26 +502,26 @@ impl_getSelection (DBusConnection * bus, DBusMessage * message, if (!dbus_message_get_args (message, &error, DBUS_TYPE_INT32, &selectionNum, DBUS_TYPE_INVALID)) { - return SPI_DBUS_RETURN_ERROR (message, &error); + return droute_invalid_arguments_error (message); } /* atk_text_get_selection returns gchar * which we discard */ g_free (atk_text_get_selection - (text, selectionNum, &intstart_offset, &intend_offset)); + (text, selectionNum, &intstart_offset, &intend_offset)); startOffset = intstart_offset; endOffset = intend_offset; reply = dbus_message_new_method_return (message); if (reply) { dbus_message_append_args (reply, DBUS_TYPE_INT32, &startOffset, - DBUS_TYPE_INT32, &endOffset, - DBUS_TYPE_INVALID); + DBUS_TYPE_INT32, &endOffset, + DBUS_TYPE_INVALID); } return reply; } static DBusMessage * impl_addSelection (DBusConnection * bus, DBusMessage * message, - void *user_data) + void *user_data) { AtkText *text = (AtkText *) user_data; dbus_int32_t startOffset, endOffset; @@ -540,21 +536,21 @@ impl_addSelection (DBusConnection * bus, DBusMessage * message, (message, &error, DBUS_TYPE_INT32, &startOffset, DBUS_TYPE_INT32, &endOffset, DBUS_TYPE_INVALID)) { - return SPI_DBUS_RETURN_ERROR (message, &error); + return droute_invalid_arguments_error (message); } rv = atk_text_add_selection (text, startOffset, endOffset); reply = dbus_message_new_method_return (message); if (reply) { dbus_message_append_args (reply, DBUS_TYPE_BOOLEAN, &rv, - DBUS_TYPE_INVALID); + DBUS_TYPE_INVALID); } return reply; } static DBusMessage * impl_removeSelection (DBusConnection * bus, DBusMessage * message, - void *user_data) + void *user_data) { AtkText *text = (AtkText *) user_data; dbus_int32_t selectionNum; @@ -568,21 +564,21 @@ impl_removeSelection (DBusConnection * bus, DBusMessage * message, if (!dbus_message_get_args (message, &error, DBUS_TYPE_INT32, &selectionNum, DBUS_TYPE_INVALID)) { - return SPI_DBUS_RETURN_ERROR (message, &error); + return droute_invalid_arguments_error (message); } rv = atk_text_remove_selection (text, selectionNum); reply = dbus_message_new_method_return (message); if (reply) { dbus_message_append_args (reply, DBUS_TYPE_BOOLEAN, &rv, - DBUS_TYPE_INVALID); + DBUS_TYPE_INVALID); } return reply; } static DBusMessage * impl_setSelection (DBusConnection * bus, DBusMessage * message, - void *user_data) + void *user_data) { AtkText *text = (AtkText *) user_data; dbus_int32_t selectionNum, startOffset, endOffset; @@ -597,25 +593,25 @@ impl_setSelection (DBusConnection * bus, DBusMessage * message, (message, &error, DBUS_TYPE_INT32, &selectionNum, DBUS_TYPE_INT32, &startOffset, DBUS_TYPE_INT32, &endOffset, DBUS_TYPE_INVALID)) { - return SPI_DBUS_RETURN_ERROR (message, &error); + return droute_invalid_arguments_error (message); } rv = atk_text_set_selection (text, selectionNum, startOffset, endOffset); reply = dbus_message_new_method_return (message); if (reply) { dbus_message_append_args (reply, DBUS_TYPE_BOOLEAN, &rv, - DBUS_TYPE_INVALID); + DBUS_TYPE_INVALID); } return reply; } static DBusMessage * impl_getRangeExtents (DBusConnection * bus, DBusMessage * message, - void *user_data) + void *user_data) { AtkText *text = (AtkText *) user_data; dbus_int32_t startOffset, endOffset; - dbus_int16_t coordType; + dbus_uint32_t coordType; AtkTextRectangle rect; dbus_int32_t x, y, width, height; DBusError error; @@ -626,13 +622,13 @@ impl_getRangeExtents (DBusConnection * bus, DBusMessage * message, dbus_error_init (&error); if (!dbus_message_get_args (message, &error, DBUS_TYPE_INT32, &startOffset, DBUS_TYPE_INT32, - &endOffset, DBUS_TYPE_INT16, &coordType, DBUS_TYPE_INVALID)) + &endOffset, DBUS_TYPE_UINT32, &coordType, DBUS_TYPE_INVALID)) { - return SPI_DBUS_RETURN_ERROR (message, &error); + return droute_invalid_arguments_error (message); } memset (&rect, 0, sizeof (rect)); atk_text_get_range_extents (text, startOffset, endOffset, - (AtkCoordType) coordType, &rect); + (AtkCoordType) coordType, &rect); x = rect.x; y = rect.y; width = rect.width; @@ -641,8 +637,8 @@ impl_getRangeExtents (DBusConnection * bus, DBusMessage * message, if (reply) { dbus_message_append_args (reply, DBUS_TYPE_INT32, &x, DBUS_TYPE_INT32, - &y, DBUS_TYPE_INT32, &width, DBUS_TYPE_INT32, - &height, DBUS_TYPE_INVALID); + &y, DBUS_TYPE_INT32, &width, DBUS_TYPE_INT32, + &height, DBUS_TYPE_INVALID); } return reply; } @@ -651,11 +647,11 @@ impl_getRangeExtents (DBusConnection * bus, DBusMessage * message, static DBusMessage * impl_getBoundedRanges (DBusConnection * bus, DBusMessage * message, - void *user_data) + void *user_data) { AtkText *text = (AtkText *) user_data; dbus_int32_t x, y, width, height; - dbus_int16_t coordType, xClipType, yClipType; + dbus_uint32_t coordType, xClipType, yClipType; DBusError error; AtkTextRange **range_list = NULL; AtkTextRectangle rect; @@ -667,11 +663,11 @@ impl_getBoundedRanges (DBusConnection * bus, DBusMessage * message, dbus_error_init (&error); if (!dbus_message_get_args (message, &error, DBUS_TYPE_INT32, &x, DBUS_TYPE_INT32, &y, - DBUS_TYPE_INT32, &height, DBUS_TYPE_INT32, &width, DBUS_TYPE_INT32, - &coordType, DBUS_TYPE_INT32, &xClipType, DBUS_TYPE_INT32, &yClipType, + DBUS_TYPE_INT32, &height, DBUS_TYPE_INT32, &width, DBUS_TYPE_UINT32, + &coordType, DBUS_TYPE_UINT32, &xClipType, DBUS_TYPE_UINT32, &yClipType, DBUS_TYPE_INVALID)) { - return SPI_DBUS_RETURN_ERROR (message, &error); + return droute_invalid_arguments_error (message); } rect.x = x; rect.y = y; @@ -680,8 +676,8 @@ impl_getBoundedRanges (DBusConnection * bus, DBusMessage * message, range_list = atk_text_get_bounded_ranges (text, &rect, (AtkCoordType) coordType, - (AtkTextClipType) xClipType, - (AtkTextClipType) yClipType); + (AtkTextClipType) xClipType, + (AtkTextClipType) yClipType); reply = dbus_message_new_method_return (message); if (!reply) return NULL; @@ -692,31 +688,31 @@ impl_getBoundedRanges (DBusConnection * bus, DBusMessage * message, { int len; for (len = 0; len < MAXRANGELEN && range_list[len]; ++len) - { - if (dbus_message_iter_open_container - (&array, DBUS_TYPE_STRUCT, NULL, &struc)) - { - dbus_int32_t val; - val = range_list[len]->start_offset; - dbus_message_iter_append_basic (&struc, DBUS_TYPE_INT32, &val); - val = range_list[len]->end_offset; - dbus_message_iter_append_basic (&struc, DBUS_TYPE_INT32, &val); - dbus_message_iter_append_basic (&struc, DBUS_TYPE_STRING, - &range_list[len]->content); - /* The variant is unimplemented in atk, but I don't want to - * unilaterally muck with the spec and remove it, so I'll just - * throw in a dummy value */ - if (dbus_message_iter_open_container - (&array, DBUS_TYPE_VARIANT, "i", &variant)) - { - dbus_uint32_t dummy = 0; - dbus_message_iter_append_basic (&variant, DBUS_TYPE_INT32, - &dummy); - dbus_message_iter_close_container (&struc, &variant); - } - dbus_message_iter_close_container (&array, &struc); - } - } + { + if (dbus_message_iter_open_container + (&array, DBUS_TYPE_STRUCT, NULL, &struc)) + { + dbus_int32_t val; + val = range_list[len]->start_offset; + dbus_message_iter_append_basic (&struc, DBUS_TYPE_INT32, &val); + val = range_list[len]->end_offset; + dbus_message_iter_append_basic (&struc, DBUS_TYPE_INT32, &val); + dbus_message_iter_append_basic (&struc, DBUS_TYPE_STRING, + &range_list[len]->content); + /* The variant is unimplemented in atk, but I don't want to + * unilaterally muck with the spec and remove it, so I'll just + * throw in a dummy value */ + if (dbus_message_iter_open_container + (&struc, DBUS_TYPE_VARIANT, "i", &variant)) + { + dbus_uint32_t dummy = 0; + dbus_message_iter_append_basic (&variant, DBUS_TYPE_INT32, + &dummy); + dbus_message_iter_close_container (&struc, &variant); + } + dbus_message_iter_close_container (&array, &struc); + } + } dbus_message_iter_close_container (&iter, &array); } return reply; @@ -724,7 +720,7 @@ impl_getBoundedRanges (DBusConnection * bus, DBusMessage * message, static DBusMessage * impl_getAttributeRun (DBusConnection * bus, DBusMessage * message, - void *user_data) + void *user_data) { DBusError error; AtkText *text = (AtkText *) user_data; @@ -735,9 +731,7 @@ impl_getAttributeRun (DBusConnection * bus, DBusMessage * message, DBusMessage *reply; AtkAttributeSet *attributes, *default_attributes = NULL; AtkAttribute *attr = NULL; - char **retval; - gint n_attributes = 0, total_attributes = 0, n_default_attributes = 0; - gint i, j; + DBusMessageIter iter, iterArray; g_return_val_if_fail (ATK_IS_TEXT (user_data), droute_not_yet_handled_error (message)); @@ -746,98 +740,63 @@ impl_getAttributeRun (DBusConnection * bus, DBusMessage * message, (message, &error, DBUS_TYPE_INT32, &offset, DBUS_TYPE_BOOLEAN, &includeDefaults, DBUS_TYPE_INVALID)) { - return SPI_DBUS_RETURN_ERROR (message, &error); + return droute_invalid_arguments_error (message); } attributes = atk_text_get_run_attributes (text, offset, &intstart_offset, - &intend_offset); + &intend_offset); - if (attributes) - total_attributes = n_attributes = g_slist_length (attributes); + reply = dbus_message_new_method_return (message); + if (!reply) + return NULL; + dbus_message_iter_init_append (reply, &iter); + dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "{ss}", &iterArray); + spi_atk_append_attribute_set_inner (&iterArray, attributes); if (includeDefaults) { default_attributes = atk_text_get_default_attributes (text); - if (default_attributes) - n_default_attributes = g_slist_length (default_attributes); - total_attributes += n_default_attributes; + spi_atk_append_attribute_set_inner (&iterArray, default_attributes); } + dbus_message_iter_close_container (&iter, &iterArray); startOffset = intstart_offset; endOffset = intend_offset; + dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &startOffset); + dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &endOffset); - retval = (char **) g_malloc (total_attributes * sizeof (char *)); - - if (total_attributes) - { - for (i = 0; i < n_attributes; ++i) - { - attr = g_slist_nth_data (attributes, i); - retval[i] = g_strconcat (attr->name, ":", attr->value, NULL); - } - - for (j = 0; j < n_default_attributes; ++i, ++j) - { - attr = g_slist_nth_data (default_attributes, j); - retval[i] = g_strconcat (attr->name, ":", attr->value, NULL); - } + atk_attribute_set_free (attributes); + if (default_attributes) + atk_attribute_set_free (default_attributes); - atk_attribute_set_free (attributes); - if (default_attributes) - atk_attribute_set_free (default_attributes); - } - reply = dbus_message_new_method_return (message); - if (reply) - { - dbus_message_append_args (reply, DBUS_TYPE_INT32, &startOffset, - DBUS_TYPE_INT32, &endOffset, DBUS_TYPE_ARRAY, - DBUS_TYPE_STRING, &retval, total_attributes, - DBUS_TYPE_INVALID); - } - for (i = 0; i < total_attributes; i++) - g_free (retval[i]); - g_free (retval); return reply; } static DBusMessage * impl_getDefaultAttributeSet (DBusConnection * bus, DBusMessage * message, - void *user_data) + void *user_data) { AtkText *text = (AtkText *) user_data; DBusMessage *reply; + DBusMessageIter iter; AtkAttributeSet *attributes; - AtkAttribute *attr = NULL; - char **retval; - gint n_attributes = 0; - gint i; g_return_val_if_fail (ATK_IS_TEXT (user_data), droute_not_yet_handled_error (message)); attributes = atk_text_get_default_attributes (text); - if (attributes) - n_attributes = g_slist_length (attributes); - retval = g_new (char *, n_attributes); - - for (i = 0; i < n_attributes; ++i) - { - attr = g_slist_nth_data (attributes, i); - retval[i] = g_strconcat (attr->name, ":", attr->value, NULL); - } - if (attributes) - atk_attribute_set_free (attributes); reply = dbus_message_new_method_return (message); if (reply) { - dbus_message_append_args (reply, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, - &retval, n_attributes, DBUS_TYPE_INVALID); + dbus_message_iter_init_append (reply, &iter); + spi_atk_append_attribute_set (&iter, attributes); } - for (i = 0; i < n_attributes; i++) - g_free (retval[i]); - g_free (retval); + + if (attributes) + atk_attribute_set_free (attributes); + return reply; }