X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=atk-adaptor%2Fevent.c;h=6e26b93ee14f259d087cdb0f0b9210c9c680fdf7;hb=0048e28f72f43986719392255a055fbb7d6224dd;hp=2039b635e7764c641be54bfcd4bd48b6a25d8926;hpb=5d374cf95f2447a712f94dd2efe2b294ecab58ca;p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git diff --git a/atk-adaptor/event.c b/atk-adaptor/event.c index 2039b63..6e26b93 100644 --- a/atk-adaptor/event.c +++ b/atk-adaptor/event.c @@ -41,7 +41,7 @@ static gint atk_bridge_focus_tracker_id; #define ITF_EVENT_OBJECT "org.freedesktop.atspi.Event.Object" #define ITF_EVENT_WINDOW "org.freedesktop.atspi.Event.Window" -#define ITF_EVENT_DOCUMENT "org.freedekstop.atspi.Event.Document" +#define ITF_EVENT_DOCUMENT "org.freedesktop.atspi.Event.Document" #define ITF_EVENT_FOCUS "org.freedesktop.atspi.Event.Focus" /*---------------------------------------------------------------------------*/ @@ -73,7 +73,7 @@ send_and_allow_reentry (DBusConnection *bus, DBusMessage *message) } static gboolean -Accessibility_DeviceEventController_notifyListenersSync(const Accessibility_DeviceEvent *key_event) +Accessibility_DeviceEventController_NotifyListenersSync(const Accessibility_DeviceEvent *key_event) { DBusMessage *message; DBusError error; @@ -83,7 +83,7 @@ Accessibility_DeviceEventController_notifyListenersSync(const Accessibility_Devi dbus_message_new_method_call(SPI_DBUS_NAME_REGISTRY, SPI_DBUS_PATH_DEC, SPI_DBUS_INTERFACE_DEC, - "notifyListenersSync"); + "NotifyListenersSync"); dbus_error_init(&error); if (spi_dbus_marshal_deviceEvent(message, key_event)) @@ -154,7 +154,7 @@ spi_atk_bridge_key_listener (AtkKeyEventStruct *event, gpointer data) spi_init_keystroke_from_atk_key_event (&key_event, event); - result = Accessibility_DeviceEventController_notifyListenersSync (&key_event); + result = Accessibility_DeviceEventController_NotifyListenersSync (&key_event); if (key_event.event_string) g_free (key_event.event_string); @@ -175,6 +175,23 @@ spi_atk_bridge_key_listener (AtkKeyEventStruct *event, gpointer data) * the AT-SPI event. */ +static gchar * +DBusSignalName (const gchar *s) +{ + gchar *ret = g_strdup (s); + gchar *t; + + if (!ret) + return NULL; + ret [0] = toupper (ret [0]); + while ((t = strchr (ret, '-')) != NULL) + { + memmove (t, t + 1, strlen (t)); + *t = toupper (*t); + } + return ret; +} + static void emit(AtkObject *accessible, const char *klass, @@ -186,6 +203,7 @@ emit(AtkObject *accessible, const void *val) { gchar *path; + gchar *cname; /* TODO this is a hack, used becuase child-added events are not guaranteed. * On recieving an event from a non-registered object we check if it can be safely @@ -205,7 +223,9 @@ emit(AtkObject *accessible, return; } - spi_dbus_emit_signal (atk_adaptor_app_data->bus, path, klass, major, minor, detail1, detail2, type, val); + cname = DBusSignalName (major); + spi_dbus_emit_signal (atk_adaptor_app_data->bus, path, klass, cname, minor, detail1, detail2, type, val); + g_free (cname); g_free(path); } @@ -224,10 +244,10 @@ emit_rect(AtkObject *accessible, { DBusMessage *sig; DBusMessageIter iter, variant, sub; - gchar *path, *cname, *t; + gchar *path, *cname; dbus_int32_t dummy = 0; - path = atk_dbus_object_to_path (accessible); + path = atk_dbus_object_to_path (accessible, FALSE); /* Tough decision here * We won't send events from accessible @@ -245,8 +265,7 @@ emit_rect(AtkObject *accessible, * 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 = '_'; + cname = DBusSignalName (major); sig = dbus_message_new_signal(path, klass, cname); g_free(path); @@ -267,6 +286,8 @@ emit_rect(AtkObject *accessible, dbus_message_iter_close_container (&iter, &variant); dbus_connection_send(atk_adaptor_app_data->bus, sig, NULL); + + dbus_message_unref (sig); } /*---------------------------------------------------------------------------*/ @@ -314,6 +335,7 @@ property_event_listener (GSignalInvocationHint *signal_hint, pname = values[0].property_name; if (strcmp (pname, "accessible-name") == 0 || strcmp (pname, "accessible-description") == 0 || + strcmp (pname, "accessible-role") == 0 || strcmp (pname, "accessible-parent") == 0) { return TRUE; @@ -325,7 +347,7 @@ property_event_listener (GSignalInvocationHint *signal_hint, if (strcmp (pname, "accessible-table-summary") == 0) { otemp = atk_table_get_summary(ATK_TABLE (accessible)); - stemp = atk_dbus_object_to_path (otemp); + stemp = atk_dbus_object_to_path (otemp, FALSE); if (stemp != NULL) emit(accessible, ITF_EVENT_OBJECT, PCHANGE, pname, 0, 0, DBUS_TYPE_OBJECT_PATH_AS_STRING, stemp); } @@ -333,7 +355,7 @@ property_event_listener (GSignalInvocationHint *signal_hint, { i = g_value_get_int (&(values->new_value)); otemp = atk_table_get_column_header(ATK_TABLE (accessible), i); - stemp = atk_dbus_object_to_path (otemp); + stemp = atk_dbus_object_to_path (otemp, FALSE); if (stemp != NULL) emit(accessible, ITF_EVENT_OBJECT, PCHANGE, pname, 0, 0, DBUS_TYPE_OBJECT_PATH_AS_STRING, stemp); } @@ -341,7 +363,7 @@ property_event_listener (GSignalInvocationHint *signal_hint, { i = g_value_get_int (&(values->new_value)); otemp = atk_table_get_row_header(ATK_TABLE (accessible), i); - stemp = atk_dbus_object_to_path (otemp); + stemp = atk_dbus_object_to_path (otemp, FALSE); if (stemp != NULL) emit(accessible, ITF_EVENT_OBJECT, PCHANGE, pname, 0, 0, DBUS_TYPE_OBJECT_PATH_AS_STRING, stemp); } @@ -522,7 +544,7 @@ active_descendant_event_listener (GSignalInvocationHint *signal_hint, minor = g_quark_to_string (signal_hint->detail); detail1 = atk_object_get_index_in_parent (child); - s = atk_dbus_object_to_path (child); + s = atk_dbus_object_to_path (child, FALSE); if (s == NULL) { g_free (s); @@ -726,6 +748,7 @@ spi_atk_register_event_listeners (void) add_signal_listener (link_selected_event_listener, "Gtk:AtkHypertext:link-selected"); add_signal_listener (generic_event_listener, "Gtk:AtkObject:visible-data-changed"); add_signal_listener (generic_event_listener, "Gtk:AtkSelection:selection-changed"); + add_signal_listener (generic_event_listener, "Gtk:AtkText:text-attributes-changed"); add_signal_listener (generic_event_listener, "Gtk:AtkText:text-caret-moved"); add_signal_listener (generic_event_listener, "Gtk:AtkTable:row-inserted"); add_signal_listener (generic_event_listener, "Gtk:AtkTable:row-reordered");