X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=atk-adaptor%2Fevent.c;h=f5a2d2d900edf82980d0b4e43cef83208836dd48;hb=6fc02645f8c017457a051344353bedeb9dffb034;hp=a616879edb131a6faab99ba2e760bbcc5d66032e;hpb=afb48dd77231e55de0afd6560038cf4af6264ec6;p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git diff --git a/atk-adaptor/event.c b/atk-adaptor/event.c index a616879..f5a2d2d 100644 --- a/atk-adaptor/event.c +++ b/atk-adaptor/event.c @@ -32,7 +32,7 @@ #include "bridge.h" #include "accessible-register.h" -#include "common/spi-dbus.h" +#include "spi-dbus.h" #include "event.h" #include "object.h" @@ -114,7 +114,7 @@ send_and_allow_reentry (DBusConnection * bus, DBusMessage * message) static gboolean Accessibility_DeviceEventController_NotifyListenersSync (const - Accessibility_DeviceEvent + AtspiDeviceEvent * key_event) { DBusMessage *message; @@ -123,8 +123,8 @@ Accessibility_DeviceEventController_NotifyListenersSync (const message = dbus_message_new_method_call (SPI_DBUS_NAME_REGISTRY, - SPI_DBUS_PATH_DEC, - SPI_DBUS_INTERFACE_DEC, + ATSPI_DBUS_PATH_DEC, + ATSPI_DBUS_INTERFACE_DEC, "NotifyListenersSync"); dbus_error_init (&error); @@ -146,7 +146,7 @@ Accessibility_DeviceEventController_NotifyListenersSync (const } static void -spi_init_keystroke_from_atk_key_event (Accessibility_DeviceEvent * keystroke, +spi_init_keystroke_from_atk_key_event (AtspiDeviceEvent * keystroke, AtkKeyEventStruct * event) { keystroke->id = (dbus_int32_t) event->keyval; @@ -172,10 +172,10 @@ spi_init_keystroke_from_atk_key_event (Accessibility_DeviceEvent * keystroke, switch (event->type) { case (ATK_KEY_EVENT_PRESS): - keystroke->type = Accessibility_KEY_PRESSED_EVENT; + keystroke->type = ATSPI_KEY_PRESSED; break; case (ATK_KEY_EVENT_RELEASE): - keystroke->type = Accessibility_KEY_RELEASED_EVENT; + keystroke->type = ATSPI_KEY_RELEASED; break; default: keystroke->type = 0; @@ -195,7 +195,7 @@ static gint spi_atk_bridge_key_listener (AtkKeyEventStruct * event, gpointer data) { gboolean result; - Accessibility_DeviceEvent key_event; + AtspiDeviceEvent key_event; spi_init_keystroke_from_atk_key_event (&key_event, event); @@ -606,15 +606,14 @@ state_event_listener (GSignalInvocationHint * signal_hint, guint detail1; accessible = ATK_OBJECT (g_value_get_object (¶m_values[0])); - pname = g_strdup (g_value_get_string (¶m_values[1])); + pname = g_value_get_string (¶m_values[1]); - /* TODO - Possibly ignore a change to the 'defunct' state. - * This is because without reference counting defunct objects should be removed. - */ detail1 = (g_value_get_boolean (¶m_values[2])) ? 1 : 0; emit_event (accessible, ITF_EVENT_OBJECT, STATE_CHANGED, pname, detail1, 0, DBUS_TYPE_INT32_AS_STRING, 0, append_basic); - g_free (pname); + + if (!g_strcmp0 (pname, "defunct")) + spi_register_deregister_object (spi_global_register, G_OBJECT (accessible)); return TRUE; } @@ -760,7 +759,7 @@ link_selected_event_listener (GSignalInvocationHint * signal_hint, AtkObject *accessible; GSignalQuery signal_query; const gchar *name, *minor; - gint detail1; + gint detail1 = 0; g_signal_query (signal_hint->signal_id, &signal_query); name = signal_query.signal_name; @@ -794,7 +793,7 @@ text_changed_event_listener (GSignalInvocationHint * signal_hint, GSignalQuery signal_query; const gchar *name, *minor; gchar *selected; - gint detail1, detail2; + gint detail1 = 0, detail2 = 0; g_signal_query (signal_hint->signal_id, &signal_query); name = signal_query.signal_name; @@ -833,7 +832,7 @@ text_insert_event_listener (GSignalInvocationHint * signal_hint, GSignalQuery signal_query; const gchar *name; gchar *minor, *text; - gint detail1, detail2; + gint detail1 = 0, detail2 = 0; accessible = ATK_OBJECT (g_value_get_object (¶m_values[0])); /* Get signal name for 'Gtk:AtkText:text-changed' so @@ -881,7 +880,7 @@ text_remove_event_listener (GSignalInvocationHint * signal_hint, GSignalQuery signal_query; const gchar *name; gchar *minor, *text; - gint detail1, detail2; + gint detail1 = 0, detail2 = 0; accessible = ATK_OBJECT (g_value_get_object (¶m_values[0])); /* Get signal name for 'Gtk:AtkText:text-changed' so @@ -932,7 +931,7 @@ text_selection_changed_event_listener (GSignalInvocationHint * signal_hint, AtkObject *accessible; GSignalQuery signal_query; const gchar *name, *minor; - gint detail1, detail2; + gint detail1 = 0, detail2 = 0; g_signal_query (signal_hint->signal_id, &signal_query); name = signal_query.signal_name; @@ -970,7 +969,7 @@ children_changed_event_listener (GSignalInvocationHint * signal_hint, { GSignalQuery signal_query; const gchar *name, *minor; - gint detail1, detail2 = 0; + gint detail1 = 0, detail2 = 0; AtkObject *accessible, *ao=NULL; gpointer child; @@ -1096,6 +1095,12 @@ spi_atk_register_event_listeners (void) g_object_unref (G_OBJECT (bo)); g_object_unref (ao); + if (listener_ids) + { + g_warning ("atk_bridge: spi_atk-register_event_listeners called multiple times"); + return; + } + /* Register for focus event notifications, and register app with central registry */ listener_ids = g_array_sized_new (FALSE, TRUE, sizeof (guint), 16); @@ -1149,10 +1154,7 @@ spi_atk_register_event_listeners (void) "Gtk:AtkTable:column-reordered"); add_signal_listener (generic_event_listener, "Gtk:AtkTable:column-deleted"); add_signal_listener (generic_event_listener, "Gtk:AtkTable:model-changed"); - - /* Children signal listeners */ - atk_add_global_event_listener (children_changed_event_listener, - "Gtk:AtkObject:children-changed"); + add_signal_listener (children_changed_event_listener, "Gtk:AtkObject:children-changed"); #if 0 g_signal_connect (G_OBJECT (spi_global_app_data->root), @@ -1187,15 +1189,22 @@ spi_atk_deregister_event_listeners (void) listener_ids = NULL; if (atk_bridge_focus_tracker_id) + { atk_remove_focus_tracker (atk_bridge_focus_tracker_id); + atk_bridge_focus_tracker_id = 0; + } for (i = 0; ids && i < ids->len; i++) { atk_remove_global_event_listener (g_array_index (ids, guint, i)); } + g_array_free (ids, TRUE); if (atk_bridge_key_event_listener_id) + { atk_remove_key_event_listener (atk_bridge_key_event_listener_id); + atk_bridge_key_event_listener_id = 0; + } } /*---------------------------------------------------------------------------*/