X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=atk-adaptor%2Fevent.c;h=7f9a2538746501dc47e5cec927cfd164c370ef1b;hb=be85f6679837d731b2008cb3b0c485c03b661cad;hp=4f108d3dd497b8a2ce7ca96ecff729b5776c7309;hpb=1889d0741dab87cb6a46246a1ebd8267f72ad148;p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git diff --git a/atk-adaptor/event.c b/atk-adaptor/event.c index 4f108d3..7f9a253 100644 --- a/atk-adaptor/event.c +++ b/atk-adaptor/event.c @@ -46,21 +46,6 @@ static gint atk_bridge_focus_tracker_id; /*---------------------------------------------------------------------------*/ -/* When sending events it is safe to register an accessible object if - * one does not already exist for a given AtkObject. - * This is because the cache update signal should then be send before - * the event signal is sent. - */ -static gchar * -get_object_path (AtkObject *accessible) -{ - guint ref; - - return atk_dbus_ref_to_path (ref); -} - -/*---------------------------------------------------------------------------*/ - static gboolean Accessibility_DeviceEventController_notifyListenersSync(const Accessibility_DeviceEvent *key_event) { @@ -164,28 +149,6 @@ spi_atk_bridge_key_listener (AtkKeyEventStruct *event, gpointer data) * the AT-SPI event. */ -/* - * This is a rather annoying function needed to replace - * NULL values of strings with the empty string. Null string - * values can be created by the atk_object_get_name or text selection - */ -static const void * -provide_defaults(const gint type, - const void *val) -{ - switch (type) - { - case DBUS_TYPE_STRING: - case DBUS_TYPE_OBJECT_PATH: - if (!val) - return ""; - else - return val; - default: - return val; - } -} - static void emit(AtkObject *accessible, const char *klass, @@ -196,11 +159,9 @@ emit(AtkObject *accessible, const char *type, const void *val) { - DBusMessage *sig; - DBusMessageIter iter, sub; - gchar *path, *cname, *t; + gchar *path; - path = get_object_path (accessible); + path = atk_dbus_object_to_path (accessible); /* Tough decision here * We won't send events from accessible @@ -209,41 +170,8 @@ emit(AtkObject *accessible, if (path == NULL) return; - if (!klass) klass = ""; - if (!major) major = ""; - if (!minor) minor = ""; - - /* - * This is very annoying, but as '-' isn't a legal signal - * name in D-Bus (Why not??!?) The names need converting - * on this side, and again on the client side. - */ - cname = g_strdup(major); - while ((t = strchr(cname, '-')) != NULL) *t = '_'; - - sig = dbus_message_new_signal(path, klass, cname); - g_free(cname); + spi_dbus_emit_signal (atk_adaptor_app_data->bus, path, klass, major, minor, detail1, detail2, type, val); g_free(path); - - dbus_message_iter_init_append(sig, &iter); - - dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &minor); - dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32, &detail1); - dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32, &detail2); - - dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT, type, &sub); - /* - * I need to convert the string signature to an integer type signature. - * DBUS_TYPE_INT32 is defined as 'i' whereas the string is "i". - * I should just be able to cast the first character of the string to an - * integer. - */ - val = provide_defaults((int) *type, val); - dbus_message_iter_append_basic(&sub, (int) *type, &val); - dbus_message_iter_close_container(&iter, &sub); - - dbus_connection_send(atk_adaptor_app_data->bus, sig, NULL); - dbus_message_unref(sig); } /*---------------------------------------------------------------------------*/ @@ -264,7 +192,7 @@ emit_rect(AtkObject *accessible, gchar *path, *cname, *t; dbus_int32_t dummy = 0; - path = get_object_path (accessible); + path = atk_dbus_object_to_path (accessible); /* Tough decision here * We won't send events from accessible @@ -356,22 +284,25 @@ property_event_listener (GSignalInvocationHint *signal_hint, if (strcmp (pname, "accessible-table-summary") == 0) { otemp = atk_table_get_summary(ATK_TABLE (accessible)); - stemp = get_object_path (otemp); - emit(accessible, ITF_EVENT_OBJECT, PCHANGE, pname, 0, 0, DBUS_TYPE_OBJECT_PATH_AS_STRING, stemp); + stemp = atk_dbus_object_to_path (otemp); + if (stemp != NULL) + emit(accessible, ITF_EVENT_OBJECT, PCHANGE, pname, 0, 0, DBUS_TYPE_OBJECT_PATH_AS_STRING, stemp); } else if (strcmp (pname, "accessible-table-column-header") == 0) { i = g_value_get_int (&(values->new_value)); otemp = atk_table_get_column_header(ATK_TABLE (accessible), i); - stemp = get_object_path (otemp); - emit(accessible, ITF_EVENT_OBJECT, PCHANGE, pname, 0, 0, DBUS_TYPE_OBJECT_PATH_AS_STRING, stemp); + stemp = atk_dbus_object_to_path (otemp); + if (stemp != NULL) + emit(accessible, ITF_EVENT_OBJECT, PCHANGE, pname, 0, 0, DBUS_TYPE_OBJECT_PATH_AS_STRING, stemp); } else if (strcmp (pname, "accessible-table-row-header") == 0) { i = g_value_get_int (&(values->new_value)); otemp = atk_table_get_row_header(ATK_TABLE (accessible), i); - stemp = get_object_path (otemp); - emit(accessible, ITF_EVENT_OBJECT, PCHANGE, pname, 0, 0, DBUS_TYPE_OBJECT_PATH_AS_STRING, stemp); + stemp = atk_dbus_object_to_path (otemp); + if (stemp != NULL) + emit(accessible, ITF_EVENT_OBJECT, PCHANGE, pname, 0, 0, DBUS_TYPE_OBJECT_PATH_AS_STRING, stemp); } else if (strcmp (pname, "accessible-table-row-description") == 0) { @@ -550,7 +481,12 @@ active_descendant_event_listener (GSignalInvocationHint *signal_hint, minor = g_quark_to_string (signal_hint->detail); detail1 = atk_object_get_index_in_parent (child); - s = get_object_path (child); + s = atk_dbus_object_to_path (child); + if (s == NULL) + { + g_free (s); + return TRUE; + } emit(accessible, ITF_EVENT_OBJECT, name, "", detail1, 0, DBUS_TYPE_OBJECT_PATH_AS_STRING, s); g_free(s);