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 0629e5a298acf969e0bb3ab0d8ef0b3978c0f74d..0e8cccc68ca580579eb4772775e6adad43d48b5b 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);