X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=atk-bridge%2Fbridge.c;h=7cb489d2a2de950a4383768d18f7becad900216e;hb=c08c79a9ce7ce0d7e4d24afb1d70f680a67919af;hp=96f64fc17d18365e01fe0e2094946f90fdfc2e7f;hpb=09b09daa2b88f6b54895ee49f59cd060b14a5acf;p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git diff --git a/atk-bridge/bridge.c b/atk-bridge/bridge.c index 96f64fc..7cb489d 100644 --- a/atk-bridge/bridge.c +++ b/atk-bridge/bridge.c @@ -42,7 +42,6 @@ static SpiApplication *this_app = NULL; static void spi_atk_bridge_exit_func (void); static void spi_atk_register_event_listeners (void); -static gboolean spi_atk_bridge_idle_init (gpointer user_data); static void spi_atk_bridge_focus_tracker (AtkObject *object); static gboolean spi_atk_bridge_property_event_listener (GSignalInvocationHint *signal_hint, guint n_param_values, @@ -53,6 +52,11 @@ spi_atk_bridge_window_event_listener (GSignalInvocationHint *signal_hint, guint n_param_values, const GValue *param_values, gpointer data); +static gboolean +spi_atk_bridge_state_event_listener (GSignalInvocationHint *signal_hint, + guint n_param_values, + const GValue *param_values, + gpointer data); static gboolean spi_atk_bridge_signal_listener (GSignalInvocationHint *signal_hint, guint n_param_values, const GValue *param_values, @@ -67,7 +71,6 @@ extern void gnome_accessibility_module_shutdown (void); static int atk_bridge_initialized = FALSE; static guint atk_bridge_focus_tracker_id = 0; static guint atk_bridge_key_event_listener_id = 0; -static guint idle_init_id = 0; static GArray *listener_ids = NULL; /* @@ -105,7 +108,7 @@ atk_bridge_init (gint *argc, gchar **argv[]) CORBA_exception_init(&ev); registry = bonobo_activation_activate_from_id ( - "OAFIID:Accessibility_Registry:proto0.1", 0, NULL, &ev); + "OAFIID:Accessibility_Registry:1.0", 0, NULL, &ev); if (ev._major != CORBA_NO_EXCEPTION) { @@ -134,7 +137,9 @@ atk_bridge_init (gint *argc, gchar **argv[]) g_atexit (spi_atk_bridge_exit_func); - idle_init_id = g_idle_add (spi_atk_bridge_idle_init, NULL); + spi_atk_register_event_listeners (); + + fprintf (stderr, "Application registered & listening\n"); return 0; } @@ -145,18 +150,6 @@ gtk_module_init (gint *argc, gchar **argv[]) return atk_bridge_init (argc, argv); } -static gboolean -spi_atk_bridge_idle_init (gpointer user_data) -{ - idle_init_id = 0; - - spi_atk_register_event_listeners (); - - fprintf (stderr, "Application registered & listening\n"); - - return FALSE; -} - static void add_signal_listener (const char *signal_name) { @@ -209,8 +202,10 @@ spi_atk_register_event_listeners (void) id = atk_add_global_event_listener (spi_atk_bridge_window_event_listener, "window:deactivate"); g_array_append_val (listener_ids, id); + id = atk_add_global_event_listener (spi_atk_bridge_state_event_listener, + "Gtk:AtkObject:state-change"); + g_array_append_val (listener_ids, id); - add_signal_listener ("Gtk:AtkObject:state-change"); add_signal_listener ("Gtk:AtkObject:children-changed"); add_signal_listener ("Gtk:AtkObject:visible-data-changed"); add_signal_listener ("Gtk:AtkSelection:selection-changed"); @@ -295,7 +290,9 @@ void gnome_accessibility_module_shutdown (void) { BonoboObject *app = (BonoboObject *) this_app; - + int i; + GArray *ids = listener_ids; + if (!atk_bridge_initialized) { return; @@ -305,26 +302,15 @@ gnome_accessibility_module_shutdown (void) g_print("Atk Accessibilty bridge shutdown\n"); - if (idle_init_id) - { - g_source_remove (idle_init_id); - idle_init_id = 0; - } - else - { - int i; - GArray *ids = listener_ids; - - listener_ids = NULL; - atk_remove_focus_tracker (atk_bridge_focus_tracker_id); - - for (i = 0; ids && i < ids->len; i++) - { + listener_ids = NULL; + atk_remove_focus_tracker (atk_bridge_focus_tracker_id); + + for (i = 0; ids && i < ids->len; i++) + { atk_remove_global_event_listener (g_array_index (ids, guint, i)); - } - - atk_remove_key_event_listener (atk_bridge_key_event_listener_id); - } + } + + atk_remove_key_event_listener (atk_bridge_key_event_listener_id); deregister_application (app); } @@ -438,7 +424,6 @@ spi_atk_bridge_property_event_listener (GSignalInvocationHint *signal_hint, return TRUE; } -#if THIS_WILL_EVER_BE_USED static gboolean spi_atk_bridge_state_event_listener (GSignalInvocationHint *signal_hint, guint n_param_values, @@ -446,7 +431,9 @@ spi_atk_bridge_state_event_listener (GSignalInvocationHint *signal_hint, gpointer data) { GObject *gobject; - AtkPropertyValues *values; + gchar *property_name; + gchar *type; + unsigned long detail1; #ifdef SPI_BRIDGE_DEBUG GSignalQuery signal_query; const gchar *name; @@ -458,16 +445,19 @@ spi_atk_bridge_state_event_listener (GSignalInvocationHint *signal_hint, #endif gobject = g_value_get_object (param_values + 0); - values = (AtkPropertyValues*) g_value_get_pointer (param_values + 1); - + property_name = g_strdup (g_value_get_string (param_values + 1)); + detail1 = (g_value_get_boolean (param_values + 2)) + ? 1 : 0; + type = g_strdup_printf ("object:state-changed:%s", property_name); spi_atk_emit_eventv (gobject, - (unsigned long) values->old_value.data[0].v_ulong, - (unsigned long) values->new_value.data[0].v_ulong, - "object:%s:?", values->property_name); - + detail1, + 0, + type); + g_free (property_name); + g_free (type); return TRUE; } -#endif + static void spi_init_keystroke_from_atk_key_event (Accessibility_DeviceEvent *keystroke, @@ -502,10 +492,10 @@ spi_init_keystroke_from_atk_key_event (Accessibility_DeviceEvent *keystroke, switch (event->type) { case (ATK_KEY_EVENT_PRESS): - keystroke->type = Accessibility_KEY_PRESSED; + keystroke->type = Accessibility_KEY_PRESSED_EVENT; break; case (ATK_KEY_EVENT_RELEASE): - keystroke->type = Accessibility_KEY_RELEASED; + keystroke->type = Accessibility_KEY_RELEASED_EVENT; break; default: keystroke->type = 0; @@ -524,7 +514,12 @@ spi_atk_bridge_key_listener (AtkKeyEventStruct *event, gpointer data) { CORBA_boolean result; Accessibility_DeviceEvent key_event; - Accessibility_DeviceEventController controller = + Accessibility_DeviceEventController controller; + + if (BONOBO_EX (&ev)) + g_warning ("failure: pre-listener get dec\n"); + + controller = Accessibility_Registry_getDeviceEventController (registry, &ev); if (BONOBO_EX (&ev))