X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=atk-adaptor%2Ftext-adaptor.c;h=a15f9c73594aea71e01906600f521da5961a2523;hb=e9d9fedb0c914825a3ccd8b390deb52a93800415;hp=ebbea28cbbf4ddd3b30b0ca38faaa798fb95329c;hpb=2db1353c28700fa75c8fa11a6d660046c189a151;p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git diff --git a/atk-adaptor/text-adaptor.c b/atk-adaptor/text-adaptor.c index ebbea28..a15f9c7 100644 --- a/atk-adaptor/text-adaptor.c +++ b/atk-adaptor/text-adaptor.c @@ -27,11 +27,12 @@ #include #include -#include "spi-common/spi-dbus.h" +#include "common/spi-dbus.h" + +#include "accessible-marshaller.h" static dbus_bool_t -impl_get_characterCount (DBusMessageIter * iter, - void *user_data) +impl_get_CharacterCount (DBusMessageIter * iter, void *user_data) { AtkText *text = (AtkText *) user_data; g_return_val_if_fail (ATK_IS_TEXT (user_data), FALSE); @@ -39,8 +40,7 @@ impl_get_characterCount (DBusMessageIter * iter, } static dbus_bool_t -impl_get_caretOffset (DBusMessageIter * iter, - void *user_data) +impl_get_CaretOffset (DBusMessageIter * iter, void *user_data) { AtkText *text = (AtkText *) user_data; g_return_val_if_fail (ATK_IS_TEXT (user_data), FALSE); @@ -48,7 +48,7 @@ impl_get_caretOffset (DBusMessageIter * iter, } static DBusMessage * -impl_getText (DBusConnection * bus, DBusMessage * message, void *user_data) +impl_GetText (DBusConnection * bus, DBusMessage * message, void *user_data) { AtkText *text = (AtkText *) user_data; dbus_int32_t startOffset, endOffset; @@ -79,7 +79,7 @@ impl_getText (DBusConnection * bus, DBusMessage * message, void *user_data) } static DBusMessage * -impl_setCaretOffset (DBusConnection * bus, DBusMessage * message, +impl_SetCaretOffset (DBusConnection * bus, DBusMessage * message, void *user_data) { AtkText *text = (AtkText *) user_data; @@ -107,7 +107,7 @@ impl_setCaretOffset (DBusConnection * bus, DBusMessage * message, } static DBusMessage * -impl_getTextBeforeOffset (DBusConnection * bus, DBusMessage * message, +impl_GetTextBeforeOffset (DBusConnection * bus, DBusMessage * message, void *user_data) { AtkText *text = (AtkText *) user_data; @@ -138,16 +138,17 @@ 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; } static DBusMessage * -impl_getTextAtOffset (DBusConnection * bus, DBusMessage * message, +impl_GetTextAtOffset (DBusConnection * bus, DBusMessage * message, void *user_data) { AtkText *text = (AtkText *) user_data; @@ -177,16 +178,17 @@ 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; } static DBusMessage * -impl_getTextAfterOffset (DBusConnection * bus, DBusMessage * message, +impl_GetTextAfterOffset (DBusConnection * bus, DBusMessage * message, void *user_data) { AtkText *text = (AtkText *) user_data; @@ -217,17 +219,18 @@ 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; } static DBusMessage * -impl_getCharacterAtOffset (DBusConnection * bus, DBusMessage * message, - void *user_data) +impl_GetCharacterAtOffset (DBusConnection * bus, DBusMessage * message, + void *user_data) { AtkText *text = (AtkText *) user_data; dbus_int32_t offset; @@ -247,13 +250,14 @@ impl_getCharacterAtOffset (DBusConnection * bus, DBusMessage * message, reply = dbus_message_new_method_return (message); if (reply) { - dbus_message_append_args (reply, DBUS_TYPE_INT32, &ch, DBUS_TYPE_INVALID); + dbus_message_append_args (reply, DBUS_TYPE_INT32, &ch, + DBUS_TYPE_INVALID); } return reply; } static DBusMessage * -impl_getAttributeValue (DBusConnection * bus, DBusMessage * message, +impl_GetAttributeValue (DBusConnection * bus, DBusMessage * message, void *user_data) { AtkText *text = (AtkText *) user_data; @@ -262,7 +266,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; @@ -301,10 +305,10 @@ 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; @@ -336,17 +340,17 @@ _string_from_attribute_set (AtkAttributeSet * set) } static DBusMessage * -impl_getAttributes (DBusConnection * bus, DBusMessage * message, +impl_GetAttributes (DBusConnection * bus, DBusMessage * message, 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)); @@ -360,55 +364,53 @@ impl_getAttributes (DBusConnection * bus, DBusMessage * message, set = atk_text_get_run_attributes (text, offset, &intstart_offset, &intend_offset); - rv = _string_from_attribute_set (set); - 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, +impl_GetDefaultAttributes (DBusConnection * bus, DBusMessage * message, 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, +impl_GetCharacterExtents (DBusConnection * bus, DBusMessage * message, 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,8 +420,8 @@ 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, - DBUS_TYPE_INVALID)) + (message, &error, DBUS_TYPE_INT32, &offset, DBUS_TYPE_UINT32, + &coordType, DBUS_TYPE_INVALID)) { return droute_invalid_arguments_error (message); } @@ -440,12 +442,12 @@ impl_getCharacterExtents (DBusConnection * bus, DBusMessage * message, } static DBusMessage * -impl_getOffsetAtPoint (DBusConnection * bus, DBusMessage * message, +impl_GetOffsetAtPoint (DBusConnection * bus, DBusMessage * message, 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,7 +457,7 @@ 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 droute_invalid_arguments_error (message); } @@ -470,7 +472,7 @@ impl_getOffsetAtPoint (DBusConnection * bus, DBusMessage * message, } static DBusMessage * -impl_getNSelections (DBusConnection * bus, DBusMessage * message, +impl_GetNSelections (DBusConnection * bus, DBusMessage * message, void *user_data) { AtkText *text = (AtkText *) user_data; @@ -490,7 +492,7 @@ impl_getNSelections (DBusConnection * bus, DBusMessage * message, } static DBusMessage * -impl_getSelection (DBusConnection * bus, DBusMessage * message, +impl_GetSelection (DBusConnection * bus, DBusMessage * message, void *user_data) { AtkText *text = (AtkText *) user_data; @@ -524,7 +526,7 @@ impl_getSelection (DBusConnection * bus, DBusMessage * message, } static DBusMessage * -impl_addSelection (DBusConnection * bus, DBusMessage * message, +impl_AddSelection (DBusConnection * bus, DBusMessage * message, void *user_data) { AtkText *text = (AtkText *) user_data; @@ -553,7 +555,7 @@ impl_addSelection (DBusConnection * bus, DBusMessage * message, } static DBusMessage * -impl_removeSelection (DBusConnection * bus, DBusMessage * message, +impl_RemoveSelection (DBusConnection * bus, DBusMessage * message, void *user_data) { AtkText *text = (AtkText *) user_data; @@ -581,7 +583,7 @@ impl_removeSelection (DBusConnection * bus, DBusMessage * message, } static DBusMessage * -impl_setSelection (DBusConnection * bus, DBusMessage * message, +impl_SetSelection (DBusConnection * bus, DBusMessage * message, void *user_data) { AtkText *text = (AtkText *) user_data; @@ -610,12 +612,12 @@ impl_setSelection (DBusConnection * bus, DBusMessage * message, } static DBusMessage * -impl_getRangeExtents (DBusConnection * bus, DBusMessage * message, +impl_GetRangeExtents (DBusConnection * bus, DBusMessage * message, 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,7 +628,7 @@ 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 droute_invalid_arguments_error (message); } @@ -650,12 +652,12 @@ impl_getRangeExtents (DBusConnection * bus, DBusMessage * message, #define MAXRANGELEN 512 static DBusMessage * -impl_getBoundedRanges (DBusConnection * bus, DBusMessage * message, +impl_GetBoundedRanges (DBusConnection * bus, DBusMessage * message, 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,8 +669,8 @@ 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 droute_invalid_arguments_error (message); @@ -707,7 +709,7 @@ impl_getBoundedRanges (DBusConnection * bus, DBusMessage * message, * 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)) + (&struc, DBUS_TYPE_VARIANT, "i", &variant)) { dbus_uint32_t dummy = 0; dbus_message_iter_append_basic (&variant, DBUS_TYPE_INT32, @@ -723,7 +725,7 @@ impl_getBoundedRanges (DBusConnection * bus, DBusMessage * message, } static DBusMessage * -impl_getAttributeRun (DBusConnection * bus, DBusMessage * message, +impl_GetAttributeRun (DBusConnection * bus, DBusMessage * message, void *user_data) { DBusError error; @@ -735,9 +737,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)); @@ -753,129 +753,93 @@ impl_getAttributeRun (DBusConnection * bus, DBusMessage * message, atk_text_get_run_attributes (text, offset, &intstart_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, +impl_GetDefaultAttributeSet (DBusConnection * bus, DBusMessage * message, 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; } static DRouteMethod methods[] = { - {impl_getText, "getText"}, - {impl_setCaretOffset, "setCaretOffset"}, - {impl_getTextBeforeOffset, "getTextBeforeOffset"}, - {impl_getTextAtOffset, "getTextAtOffset"}, - {impl_getTextAfterOffset, "getTextAfterOffset"}, - {impl_getCharacterAtOffset, "getCharacterAtOffset"}, - {impl_getAttributeValue, "getAttributeValue"}, - {impl_getAttributes, "getAttributes"}, - {impl_getDefaultAttributes, "getDefaultAttributes"}, - {impl_getCharacterExtents, "getCharacterExtents"}, - {impl_getOffsetAtPoint, "getOffsetAtPoint"}, - {impl_getNSelections, "getNSelections"}, - {impl_getSelection, "getSelection"}, - {impl_addSelection, "addSelection"}, - {impl_removeSelection, "removeSelection"}, - {impl_setSelection, "setSelection"}, - {impl_getRangeExtents, "getRangeExtents"}, - {impl_getBoundedRanges, "getBoundedRanges"}, - {impl_getAttributeRun, "getAttributeRun"}, - {impl_getDefaultAttributeSet, "getDefaultAttributeSet"}, + {impl_GetText, "GetText"}, + {impl_SetCaretOffset, "SetCaretOffset"}, + {impl_GetTextBeforeOffset, "GetTextBeforeOffset"}, + {impl_GetTextAtOffset, "GetTextAtOffset"}, + {impl_GetTextAfterOffset, "GetTextAfterOffset"}, + {impl_GetCharacterAtOffset, "GetCharacterAtOffset"}, + {impl_GetAttributeValue, "GetAttributeValue"}, + {impl_GetAttributes, "GetAttributes"}, + {impl_GetDefaultAttributes, "GetDefaultAttributes"}, + {impl_GetCharacterExtents, "GetCharacterExtents"}, + {impl_GetOffsetAtPoint, "GetOffsetAtPoint"}, + {impl_GetNSelections, "GetNSelections"}, + {impl_GetSelection, "GetSelection"}, + {impl_AddSelection, "AddSelection"}, + {impl_RemoveSelection, "RemoveSelection"}, + {impl_SetSelection, "SetSelection"}, + {impl_GetRangeExtents, "GetRangeExtents"}, + {impl_GetBoundedRanges, "GetBoundedRanges"}, + {impl_GetAttributeRun, "GetAttributeRun"}, + {impl_GetDefaultAttributeSet, "GetDefaultAttributeSet"}, {NULL, NULL} }; static DRouteProperty properties[] = { - {impl_get_characterCount, NULL, "characterCount"}, - {impl_get_caretOffset, NULL, "caretOffset"}, + {impl_get_CharacterCount, NULL, "CharacterCount"}, + {impl_get_CaretOffset, NULL, "CaretOffset"}, {NULL, NULL, NULL} }; void -spi_initialize_text (DRoutePath *path) +spi_initialize_text (DRoutePath * path) { droute_path_add_interface (path, - SPI_DBUS_INTERFACE_TEXT, - methods, - properties); + SPI_DBUS_INTERFACE_TEXT, methods, properties); };