X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=atk-adaptor%2Fadaptors%2Fcomponent-adaptor.c;h=3db9717c8a09f78ce25958f69111745588f06b1d;hb=3e6cf48cd7a24303324f10039b63bd916a8aa49e;hp=5726c6fb060a474ade5fa5399c7a755ed406d0bd;hpb=73469041fcbb7b5e81d4ca3877f6614795a69e50;p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git diff --git a/atk-adaptor/adaptors/component-adaptor.c b/atk-adaptor/adaptors/component-adaptor.c index 5726c6f..3db9717 100644 --- a/atk-adaptor/adaptors/component-adaptor.c +++ b/atk-adaptor/adaptors/component-adaptor.c @@ -24,6 +24,7 @@ #include #include +#include #include "common/spi-dbus.h" #include "object.h" @@ -67,6 +68,7 @@ impl_GetAccessibleAtPoint (DBusConnection * bus, DBusMessage * message, AtkComponent *component = (AtkComponent *) user_data; dbus_int32_t x, y; dbus_uint32_t coord_type; + DBusMessage *reply; DBusError error; AtkObject *child; @@ -83,7 +85,10 @@ impl_GetAccessibleAtPoint (DBusConnection * bus, DBusMessage * message, child = atk_component_ref_accessible_at_point (component, x, y, (AtkCoordType) coord_type); - return spi_object_return_reference (message, child, TRUE); + reply = spi_object_return_reference (message, child); + g_object_unref (child); + + return reply; } static DBusMessage * @@ -287,6 +292,110 @@ impl_GetAlpha (DBusConnection * bus, DBusMessage * message, void *user_data) return reply; } +static DBusMessage * +impl_SetExtents (DBusConnection * bus, DBusMessage * message, void *user_data) +{ + AtkComponent *component = (AtkComponent *) user_data; + DBusMessageIter iter, iter_struct; + dbus_uint32_t coord_type; + dbus_int32_t x, y, width, height; + dbus_bool_t ret; + DBusMessage *reply; + + g_return_val_if_fail (ATK_IS_COMPONENT (user_data), + droute_not_yet_handled_error (message)); + + if (strcmp (dbus_message_get_signature (message), "(iiii)u") != 0) + { + return droute_invalid_arguments_error (message); + } + + dbus_message_iter_init (message, &iter); + dbus_message_iter_recurse (&iter, &iter_struct); + dbus_message_iter_get_basic (&iter_struct, &x); + dbus_message_iter_next (&iter_struct); + dbus_message_iter_get_basic (&iter_struct, &y); + dbus_message_iter_next (&iter_struct); + dbus_message_iter_get_basic (&iter_struct, &width); + dbus_message_iter_next (&iter_struct); + dbus_message_iter_get_basic (&iter_struct, &height); + dbus_message_iter_next (&iter_struct); + dbus_message_iter_next (&iter); + dbus_message_iter_get_basic (&iter, &coord_type); + + ret = atk_component_set_extents (component, x, y, width, height, coord_type); + + reply = dbus_message_new_method_return (message); + if (reply) + { + dbus_message_append_args (reply, DBUS_TYPE_BOOLEAN, &ret, + DBUS_TYPE_INVALID); + } + + return reply; +} + +static DBusMessage * +impl_SetPosition (DBusConnection * bus, DBusMessage * message, void *user_data) +{ + AtkComponent *component = (AtkComponent *) user_data; + dbus_uint32_t coord_type; + dbus_int32_t x, y; + dbus_bool_t ret; + DBusMessage *reply; + + g_return_val_if_fail (ATK_IS_COMPONENT (user_data), + droute_not_yet_handled_error (message)); + + if (!dbus_message_get_args + (message, NULL, DBUS_TYPE_INT32, &x, DBUS_TYPE_INT32, &y, + DBUS_TYPE_UINT32, &coord_type, DBUS_TYPE_INVALID)) + { + return droute_invalid_arguments_error (message); + } + + ret = atk_component_set_position (component, x, y, coord_type); + + reply = dbus_message_new_method_return (message); + if (reply) + { + dbus_message_append_args (reply, DBUS_TYPE_BOOLEAN, &ret, + DBUS_TYPE_INVALID); + } + + return reply; +} + +static DBusMessage * +impl_SetSize (DBusConnection * bus, DBusMessage * message, void *user_data) +{ + AtkComponent *component = (AtkComponent *) user_data; + dbus_int32_t width, height; + dbus_bool_t ret; + DBusMessage *reply; + + g_return_val_if_fail (ATK_IS_COMPONENT (user_data), + droute_not_yet_handled_error (message)); + + if (!dbus_message_get_args + (message, NULL, DBUS_TYPE_INT32, &width, DBUS_TYPE_INT32, &height, + DBUS_TYPE_INVALID)) + { + return droute_invalid_arguments_error (message); + } + + ret = atk_component_set_size (component, width, height); + + reply = dbus_message_new_method_return (message); + if (reply) + { + dbus_message_append_args (reply, DBUS_TYPE_BOOLEAN, &ret, + DBUS_TYPE_INVALID); + } + + return reply; +} + static DRouteMethod methods[] = { {impl_contains, "contains"}, {impl_GetAccessibleAtPoint, "GetAccessibleAtPoint"}, @@ -299,6 +408,9 @@ static DRouteMethod methods[] = { //{impl_registerFocusHandler, "registerFocusHandler"}, //{impl_deregisterFocusHandler, "deregisterFocusHandler"}, {impl_GetAlpha, "GetAlpha"}, + {impl_SetExtents, "SetExtents"}, + {impl_SetPosition, "SetPosition"}, + {impl_SetSize, "SetSize"}, {NULL, NULL} };