Unify switching navigation context on TAP and on ATSPI event 09/311509/1
authorLukasz Oleksak <l.oleksak@samsung.com>
Thu, 16 May 2024 12:49:10 +0000 (14:49 +0200)
committerYoungsun Suh <youngsun.suh@samsung.com>
Wed, 22 May 2024 05:11:35 +0000 (14:11 +0900)
Change-Id: I40b5060823b5622356dc2e4236644826103183bc

include/window_tracker.h
src/app_tracker.c
src/keyboard_tracker.c
src/navigator.c
src/window_tracker.c

index 99e265ea883083a405f002814ea260c98b0dc6c7..0c7301f22aef2e86fb0ceba8113b6139ef1dd19a 100644 (file)
@@ -73,7 +73,7 @@ AtspiAccessible *window_tracker_prev_window_get(WindowTrackerData *wtd, AtspiAcc
 /*
  * @brief Appends window from window list
  */
-void window_tracker_window_append(WindowTrackerData *wtd, AtspiAccessible *window, AtspiRole role);
+void window_tracker_window_append(WindowTrackerData *wtd, AtspiAccessible *window);
 
 /*
  * @brief Removes window from window list
index 29493a731da66c16cac154e147cd9cd11ffd4e01..786933cbe3a08cec1040bea639cfcd7a1b833419 100644 (file)
@@ -55,6 +55,10 @@ struct _App_Tracker_Data {
        AtspiAccessible *desktop;
 };
 
+#ifndef SCREEN_READER_TV
+static void app_tracker_window_append(void *data, AtspiAccessible *root);
+#endif
+
 #ifndef SCREEN_READER_TV
 static void app_tracker_context_switch(void *data, AtspiAccessible *root);
 #endif
@@ -324,7 +328,7 @@ static void _on_atspi_event_cb(AtspiEvent *event, void *user_data)
                                because the 'visible' callback of window tracker is not called on window tracker side,
                                if window object is removed. */
                                DEBUG("Append Window");
-                               window_tracker_window_append(atd->window_tracker_data, event->source, role);
+                               window_tracker_window_append(atd->window_tracker_data, event->source);
                        } else if (role == ATSPI_ROLE_PAGE_TAB) {
                                // refresh default label for newly showing page tab
                                DEBUG("Refreshing TAB");
@@ -636,7 +640,7 @@ app_tracker_init(AppTrackerEventWithDefaultLabelInfoCB view_content_changed_cb,
        DEBUG("Registering app_tracker_context_switch=%p, for atd=%p", app_tracker_context_switch, atd);
        window_tracker_register(atd->window_tracker_data, app_tracker_context_switch, atd);
        window_tracker_active_window_request(atd->window_tracker_data);
-       navigator_set_context_switch_cb(nd, app_tracker_context_switch, atd);
+       navigator_set_context_switch_cb(nd, app_tracker_window_append, atd);
 #endif
 
        atd->desktop = atspi_get_desktop(0);
@@ -703,6 +707,18 @@ void app_tracker_shutdown(App_Tracker_Data *atd)
        g_free(atd);
 }
 
+#ifndef SCREEN_READER_TV
+static void app_tracker_window_append(void *data, AtspiAccessible *root)
+{
+       App_Tracker_Data *atd = (App_Tracker_Data *)data;
+       if (!atd) {
+               ERROR("app_tracker module used without initialization");
+               return;
+       }
+       window_tracker_window_append(atd->window_tracker_data, root);
+}
+#endif
+
 #ifndef SCREEN_READER_TV
 static void app_tracker_context_switch(void *data, AtspiAccessible *root)
 {
index 3f04dc72fe407fc17afc2f75e4393d6950001ff5..cc353f8501b16334547d4044ddd67913f178139b 100644 (file)
@@ -99,8 +99,7 @@ static void keyboard_changed_cb(keynode_t *node, void *user_data)
 static void _set_vconf_key_changed_callback_keyboard_status(KeyboardTrackerData *ktd)
 {
        DEBUG("START");
-       int keyboard_state;
-       int ret = vconf_get_int(VCONFKEY_ISF_INPUT_PANEL_STATE, &keyboard_state);
+       int ret = vconf_get_int(VCONFKEY_ISF_INPUT_PANEL_STATE, &ktd->prev_keyboard_state);
        if (ret != 0) {
                ERROR("ret == %d", ret);
                return;
index a7a17e7f551aad72352bb1537a33fd1ba849c079..1b88fbe03ad91d0295ae9693152cbcf23f99741f 100644 (file)
@@ -2308,15 +2308,12 @@ TIZEN_PROD_STATIC void on_gesture_detected(void *data, const Eldbus_Message *msg
                                return;
                        }
                        nd->last_hover_event_time = info->state != 1 ? -1 : info->event_time;
+                       _focus_widget(nd, info);
+
                        keyboard_status = keyboard_event_status(nd->keyboard_tracker_data, info->resource_id);
                        if (keyboard_status) {
                                keyboard_signal_emit(nd->keyboard_tracker_data, info->type, info->x_end, info->y_end);
-                               /*TODO: Check if break is necessary or not.
-                               If the keypad window is top, the _focus_widget should be used
-                               to make highlight on keypad window. */
-                               //break;
                        }
-                       _focus_widget(nd, info);
                }
                break;
        case TWO_FINGERS_HOVER:
@@ -2363,18 +2360,14 @@ TIZEN_PROD_STATIC void on_gesture_detected(void *data, const Eldbus_Message *msg
                }
                break;
        case ONE_FINGER_SINGLE_TAP:
-               keyboard_status = keyboard_event_status(nd->keyboard_tracker_data, info->resource_id);
-               if (keyboard_status) {
-                       keyboard_signal_emit(nd->keyboard_tracker_data, info->type, info->x_end, info->y_end);
-                       /*TODO: Check if break is necessary or not.
-                       If the keypad window is top, the _focus_widget should be used
-                       to make highlight on keypad window. */
-                       //break;
-               }
                if (info->state == 2 && nd->prepared)
                        nd->prepared = false;
                if (!nd->prepared)
                        _focus_widget(nd, info);
+               keyboard_status = keyboard_event_status(nd->keyboard_tracker_data, info->resource_id);
+               if (keyboard_status) {
+                       keyboard_signal_emit(nd->keyboard_tracker_data, info->type, info->x_end, info->y_end);
+               }
                break;
        case ONE_FINGER_DOUBLE_TAP:
                keyboard_status = keyboard_event_status(nd->keyboard_tracker_data, info->resource_id);
index 67a90a7596dc66b82ba4fce1d31a175820b17781..e8f0a81acb63d58ac5e38073bdba6a3f3d9b25ea 100644 (file)
@@ -367,6 +367,7 @@ static void _on_atspi_window_cb(AtspiEvent *event, void *user_data)
                        (window_activate_info_type & ACCESSIBLE_WINDOW_ACTIVATE_INFO_KEYBOARD);
                if (keyboard_window_activated) {
                        wtd->keyboard_window = g_object_ref(event->source);
+                       window_tracker_keyboard_window_append(wtd);
                        goto end;
                }
                _window_append(wtd, event->source, EINA_TRUE, EINA_FALSE, window_activate_info_type);
@@ -770,8 +771,12 @@ AtspiAccessible *window_tracker_prev_window_get(WindowTrackerData *wtd, AtspiAcc
        return _find_next_valid_win(wtd, current_root, WIN_SEARCH_BACKWARD);
 }
 
-void window_tracker_window_append(WindowTrackerData *wtd, AtspiAccessible *window, AtspiRole role)
+void window_tracker_window_append(WindowTrackerData *wtd, AtspiAccessible *window)
 {
+       if (atspi_accessible_is_equal(wtd->keyboard_window, window)) {
+               window_tracker_keyboard_window_append(wtd);
+               return;
+       }
        _window_append(wtd, window, EINA_TRUE, EINA_FALSE, ACCESSIBLE_WINDOW_ACTIVATE_INFO_DEFAULT_LABEL_ENABLED);
 }