Fix page_tab behavior on efl app 75/323275/1 accepted/tizen/7.0/unified/20250425.140008 accepted/tizen/7.0/unified/20250425.154816
authorYoungsun Suh <youngsun.suh@samsung.com>
Fri, 25 Apr 2025 05:22:13 +0000 (14:22 +0900)
committerYoungsun Suh <youngsun.suh@samsung.com>
Fri, 25 Apr 2025 05:22:13 +0000 (14:22 +0900)
Change-Id: I2b67ac4b7bd69ccca0eba8f611fb6e91be88ee94

include/utils.h
src/app_tracker.c
src/reading_composer.c
src/utils.c

index 3cf1ba80bbacc5725a6cfd6e31706d8b2b237d6a..bbe0128a2d0e180277d11b02d44bb508cc905431 100644 (file)
@@ -141,6 +141,7 @@ Eina_Bool object_has_focused_state(AtspiAccessible *obj);
 Eina_Bool object_has_defunct_state(AtspiAccessible *obj);
 Eina_Bool object_has_highlighted_state(AtspiAccessible *obj);
 Eina_Bool object_get_extents(AtspiAccessible *object, AtspiRect *extents);
+Eina_Bool is_legacy_toolkit(AtspiAccessible *obj);
 
 int get_percent_value(double value, double lower, double upper);
 
index c3ff8870d225e57e55e21438ce6a9bf24041e67e..26f9eeefbbdec231755120846378b86ef87d65d7 100644 (file)
@@ -328,14 +328,10 @@ static void _on_atspi_event_cb(AtspiEvent *event, void *user_data)
                                DEBUG("Append Window");
                                window_tracker_window_append(atd->window_tracker_data, event->source, EINA_FALSE);
                        } else if (role == ATSPI_ROLE_PAGE_TAB) {
-                               gchar* toolkit_name = atspi_accessible_get_toolkit_name(event->source, NULL);
-                               if (toolkit_name) {
-                                       if (g_str_equal(toolkit_name, "elementary")) {
-                                               // EFL only: refresh default label for newly showing page tab
-                                               DEBUG("Refreshing TAB");
-                                               timer_reschedule(atd);
-                                       }
-                                       g_free(toolkit_name);
+                               if (is_legacy_toolkit(event->source)) {
+                                       // EFL only: refresh default label for newly showing page tab
+                                       DEBUG("Refreshing TAB");
+                                       timer_reschedule(atd);
                                }
                        } else if (role == ATSPI_ROLE_NOTIFICATION) {
                                // Read notification without rebuilding context
index d2f28bd2d4d397760290aefd88727647c206f150..ca4a25da8657384a032e22e1e839c07d16161f89 100644 (file)
@@ -212,6 +212,7 @@ TIZEN_PROD_STATIC char *generate_role_trait(AtspiAccessibleReadingMaterial *rm)
        return generate_role_trait_recursive(rm, 0, 1);
 }
 
+
 TIZEN_PROD_STATIC char *generate_state_trait_from_role(AtspiAccessibleReadingMaterial *rm)
 {
        AtspiRole role = rm->role;
@@ -231,7 +232,8 @@ TIZEN_PROD_STATIC char *generate_state_trait_from_role(AtspiAccessibleReadingMat
        }
        case ATSPI_ROLE_PAGE_TAB: {
                AtspiAccessible *parent = rm->parent;
-               if (!parent) break;
+               if (!parent || is_legacy_toolkit(rm->self)) break;
+
                AtspiRole parent_role = rm->parent_role;
                if (parent_role == ATSPI_ROLE_PAGE_TAB_LIST) {
                        gboolean is_selected = STATE_SET_CONTAINS(rm->states, ATSPI_STATE_SELECTED);
@@ -374,7 +376,8 @@ TIZEN_PROD_STATIC char *generate_description_trait(AtspiAccessibleReadingMateria
        }
        case ATSPI_ROLE_PAGE_TAB: {
                AtspiAccessible *parent = rm->parent;
-               if (!parent) break;
+               if (!parent || is_legacy_toolkit(rm->self)) break;
+
                AtspiRole parent_role = rm->parent_role;
                if (parent_role == ATSPI_ROLE_PAGE_TAB_LIST) {
                        int children_count = rm->parent_child_count;
index 5e418f02a5dc5c075b30cebc879be55080f9ac81..4bd2531e119976c38be09fecde09cdf84c34d9a4 100644 (file)
@@ -252,6 +252,23 @@ Eina_Bool object_has_highlighted_state(AtspiAccessible *obj)
        return _object_has_state(obj, ATSPI_STATE_HIGHLIGHTED);
 }
 
+Eina_Bool is_legacy_toolkit(AtspiAccessible *obj) {
+       Eina_Bool ret = EINA_FALSE;
+       AtspiAccessible *app = atspi_accessible_get_application(obj, NULL);
+       if (app) {
+               gchar* toolkit_name = atspi_accessible_get_toolkit_name(app, NULL);
+               if (toolkit_name) {
+                       if (g_str_equal(toolkit_name, "elementary")) {
+                               ret = EINA_TRUE;
+                       }
+                       g_free(toolkit_name);
+               }
+               g_object_unref(app);
+       }
+       DEBUG("is_legacy_toolkit=%d", ret);
+       return ret;
+}
+
 int get_percent_value(double value, double lower, double upper)
 {
        double add_for_rounding = 0.5f;