Fixed screen-reader active window detection.
authorTomasz Olszak <t.olszak@samsung.com>
Mon, 31 Aug 2015 11:58:47 +0000 (13:58 +0200)
committerTomasz Olszak <t.olszak@samsung.com>
Mon, 31 Aug 2015 15:00:25 +0000 (17:00 +0200)
Now it bases on window:activate events.

Change-Id: If0eb6295432246f1ed8cd6167846f770061efe08

src/main.c
src/navigator.c
src/screen_reader_switch.c
src/window_tracker.c

index 1e6300d..3db2a97 100644 (file)
@@ -208,13 +208,12 @@ static int app_create(void *data)
        elm_init(0, NULL);
 
        logger_init();
-       screen_reader_switch_enabled_set(EINA_TRUE);
        screen_reader_create_service(data);
 #ifndef SCREEN_READER_TV
        screen_reader_gestures_init();
        navigator_init();
 #endif
-
+       screen_reader_switch_enabled_set(EINA_TRUE);
        return 0;
 }
 
index d3a8046..6a58458 100644 (file)
@@ -1891,7 +1891,8 @@ static void on_window_activate(void *data, AtspiAccessible * window)
 {
        DEBUG("START");
 
-       app_tracker_callback_unregister(top_window, _view_content_changed, NULL);
+       if (top_window)
+               app_tracker_callback_unregister(top_window, _view_content_changed, NULL);
 
        if (window) {
                DEBUG("Window name: %s", atspi_accessible_get_name(window, NULL));
index 8a3c207..651d49f 100644 (file)
@@ -110,12 +110,8 @@ Eina_Bool screen_reader_switch_enabled_set(Eina_Bool value)
                ERROR("Failed to close variant iterator");
                goto fail_msg;
        }
-       reply = eldbus_proxy_send_and_block(proxy, req, 100.0);
-       if (!reply || eldbus_message_error_get(reply, &errname, &errmsg)) {
-               ERROR("Send failed: %s %s\n", errname, errmsg);
-               goto fail_msg;
-       } else
-               ret = EINA_TRUE;
+       eldbus_proxy_send(proxy, req, NULL, NULL, -1.0);
+       ret = EINA_TRUE;
 
  fail_msg:
        eldbus_message_unref(req);
index 20a1abb..ebdb9be 100644 (file)
@@ -27,7 +27,7 @@ static AtspiAccessible *last_active_win;
 
 static void _on_atspi_window_cb(const AtspiEvent * event)
 {
-       ERROR("Event: %s: %s", event->type, atspi_accessible_get_name(event->source, NULL));
+       DEBUG("Event: %s: %s", event->type, atspi_accessible_get_name(event->source, NULL));
 
        if (!strcmp(event->type, "window:activate") && last_active_win != event->source)        //if we got activate 2 times
        {
@@ -68,7 +68,6 @@ static AtspiAccessible *_get_active_win(void)
                        app_children_count = atspi_accessible_get_child_count(app, NULL);
                else
                        app_children_count = 0;
-
                for (j = 0; j < app_children_count; j++) {
                        AtspiAccessible *win = atspi_accessible_get_child_at_index(app, j, NULL);
                        AtspiStateSet *states = atspi_accessible_get_state_set(win);
@@ -101,17 +100,13 @@ void window_tracker_init(void)
 {
        DEBUG("START");
        listener = atspi_event_listener_new_simple(_on_atspi_window_cb, NULL);
-       atspi_event_listener_register(listener, "window:create", NULL);
        atspi_event_listener_register(listener, "window:activate", NULL);
-       atspi_event_listener_register(listener, "window:restore", NULL);
 }
 
 void window_tracker_shutdown(void)
 {
        DEBUG("START");
-       atspi_event_listener_deregister(listener, "window:create", NULL);
        atspi_event_listener_deregister(listener, "window:activate", NULL);
-       atspi_event_listener_deregister(listener, "window:restore", NULL);
        g_object_unref(listener);
        listener = NULL;
        user_cb = NULL;