void window_tracker_active_window_request(WindowTrackerData *wtd)
{
DEBUG("START");
+
+ /* append foreground window first which can be used on multi-window case */
+ GArray *windows = atspi_get_foreground_windows();
+ AtspiAccessible *window;
+ int i;
+ if (windows) {
+ DEBUG("Foreground windows: %d", windows->len);
+ for (i = 0; i < windows->len; i++) {
+ window = g_array_index(windows, AtspiAccessible *, i);
+ _window_append(wtd, window, EINA_TRUE, EINA_FALSE, ACCESSIBLE_WINDOW_ACTIVATE_INFO_DEFAULT_LABEL_ENABLED);
+ }
+ for (i = 0; i< windows->len; ++i) {
+ g_object_unref(g_array_index(windows, AtspiAccessible*, i));
+ }
+ g_array_free(windows, TRUE);
+ }
+
/* this should be after the window_tracker_register because this calls _window_append
and the _window_append needs wtd->user_cb (app_tracker_context_switch) */
_active_window_append(wtd);
void window_tracker_window_append(WindowTrackerData *wtd, AtspiAccessible *window, AtspiRole role)
{
- gchar *name = atspi_accessible_get_name(window, NULL);
-
- if (name) {
- /*TODO: need to check if checking INPUT_METHOD_WINDOW is necessary or not
- because window_tracker_window_append is not called from app_tracker
- if role is INPUT_METHOD_WINDOW, when app_tracker handles showing event.*/
- if (role == ATSPI_ROLE_INPUT_METHOD_WINDOW && g_strcmp0(name, "ISF Popup")) {
- _window_append(wtd, window, EINA_FALSE, EINA_TRUE, ACCESSIBLE_WINDOW_ACTIVATE_INFO_DEFAULT_LABEL_ENABLED);
- /* keep keyboard window reference, because keyboard window exsits always if it shows once. */
- if (wtd->keyboard_window) g_object_unref(wtd->keyboard_window);
- wtd->keyboard_window = g_object_ref(window);
- } else if (!g_strcmp0(name, "ISF Popup"))
- /*ISF Popup: this would be an indicator window of keyboard.
- There is a show(hide)_indicator_window in ise-default package.
- If so, I cannot remember why we are appending this window.*/
- _window_append(wtd, window, EINA_TRUE, EINA_FALSE, ACCESSIBLE_WINDOW_ACTIVATE_INFO_DEFAULT_LABEL_ENABLED);
- }
-
- g_free(name);
+ _window_append(wtd, window, EINA_TRUE, EINA_FALSE, ACCESSIBLE_WINDOW_ACTIVATE_INFO_DEFAULT_LABEL_ENABLED);
}
void window_tracker_window_remove(WindowTrackerData *wtd, AtspiAccessible *window)