Focus to default_label after dispose keyboard 21/317721/1
authorYoungsun Suh <youngsun.suh@samsung.com>
Thu, 30 May 2024 06:35:27 +0000 (15:35 +0900)
committerSeoyeon Kim <seoyeon2.kim@samsung.com>
Tue, 7 Jan 2025 05:08:00 +0000 (14:08 +0900)
Change-Id: I7eb5b645346a2950f273d6ac6499c706963d0c78

src/app_tracker.c

index 16ebba3ec368977e435aaf1f77164bd79e499a6c..3f49edb02b33fec1a80c79a4c2c6cd20d11e308b 100644 (file)
@@ -375,12 +375,26 @@ static void _on_atspi_event_cb(AtspiEvent *event, void *user_data)
                                        /* change flat_navi context root to next top window */
                                        FlatNaviContext *fn_context;
                                        AtspiAccessible *next_top_window;
+                                       gchar *id = NULL;
+
                                        fn_context = navigator_get_flat_navi_context(atd->view_content_changed_ecd->user_data);
                                        next_top_window = window_tracker_top_window_get(atd->window_tracker_data);
-                                       flat_navi_context_root_change(fn_context, next_top_window);
-                                       gchar *id = atspi_accessible_get_unique_id(next_top_window, NULL);
+                                       AtspiAccessibleDefaultLabelInfo *dli = atspi_accessible_get_default_label_info(atd->root, NULL);
+                                       if (dli) {
+                                               flat_navi_context_root_change(fn_context, dli->obj);
+                                               id = atspi_accessible_get_unique_id(dli->obj, NULL);
+                                               // cleanup dli
+                                               if (dli->attributes)
+                                                       g_hash_table_unref(dli->attributes);
+                                               if (dli->obj)
+                                                       g_object_unref(dli->obj);
+                                               g_free(dli);
+                                       } else {
+                                               flat_navi_context_root_change(fn_context, next_top_window);
+                                               id = atspi_accessible_get_unique_id(next_top_window, NULL);
+                                       }
                                        DEBUG("Root window is changed to: %s", id);
-                                       g_free(id);
+                                       if(id) g_free(id);
                                } else if (rect->width > 0 && rect->height > 0)
                                        window_tracker_keyboard_window_append(atd->window_tracker_data);
                        }