e_client: check visibility of the activated window when focus set to the window 91/305491/1
authorJunseok Kim <juns.kim@samsung.com>
Fri, 2 Feb 2024 07:56:54 +0000 (16:56 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Fri, 2 Feb 2024 08:25:51 +0000 (17:25 +0900)
There was a bug that focus unset by focus calculate after focus set by activate.
(e.g. visible window but out of zone geometry)
This problem occures because the visibility of the activated window is not checked.
For fix this issue, check visibility of the activated window when focus set.

Change-Id: I00cec403b51b11593dfef2c86cf7cfb50858a7af

src/bin/e_focus_policy_history.c

index 0629e5a..0e8cccc 100644 (file)
@@ -804,7 +804,8 @@ _focus_policy_history_cb_client_activate_done(struct wl_listener *listener, void
     obscured_above = e_client_check_fully_contain_by_above(focus_ec, EINA_FALSE);
     if (!obscured_above)
       {
-         if (!e_policy_visibility_client_is_uniconic(ec))
+         if (!e_policy_visibility_client_is_uniconic(ec) ||
+             (ec->visibility.obscured == E_VISIBILITY_FULLY_OBSCURED))
            {
               _e_focus_policy_history_focus_focus_defer_set(history_policy, focus_ec);
               _focus_policy_history_focus_stack_latest_set(history_policy, focus_ec);