e_focus_policy: make a E_CLIENT_HOOK_EVAL_END callback 31/297531/1
authorSooChan Lim <sc1.lim@samsung.com>
Thu, 10 Aug 2023 01:23:09 +0000 (10:23 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Mon, 21 Aug 2023 07:58:38 +0000 (16:58 +0900)
The focus may be changed at E_CLIENT_HOOK_EVAL_END callback.

Change-Id: I578fae83cb52b579d87239bac4e27d6ed6426b17

src/bin/e_client.c
src/bin/e_focus_policy_history.c
src/bin/e_focus_policy_topmost.c

index 193b488..dcfe30c 100644 (file)
@@ -2993,6 +2993,9 @@ _e_client_eval(E_Client *ec)
                  ec->changes.need_maximize || ec->changes.need_unmaximize;
    ec->changes.stack = 0;
 
+#ifdef REFACTOR_FOCUS_POLICY
+   // This code executes at E_CLIENT_HOOK_EVAL_END callback at e_focus_policy_topmost.c and e_focus_policy_history.c
+#else
    if ((!ec->input_only) && (!ec->iconic) &&
        ((!ec->zone) || e_client_util_desk_visible(ec, e_desk_current_get(ec->zone))) &&
        ((ec->take_focus) || (ec->want_focus)))
@@ -3026,6 +3029,7 @@ _e_client_eval(E_Client *ec)
      }
    else
      ec->take_focus = ec->want_focus = 0;
+#endif
 
    if (ec->changes.need_maximize)
      {
index 1ab19a2..0c5f55f 100644 (file)
@@ -113,6 +113,12 @@ _focus_policy_history_hook_cb_client_focus_unset(void *data, E_Client *ec)
    // TODO:
 }
 
+static void
+_focus_policy_history_hook_cb_client_eval_end(void *data, E_Client *ec)
+{
+   // TODO:
+}
+
 static Eina_Bool
 _focus_policy_hook_history_cb_comp_object_lower(void *data, E_Client *ec)
 {
@@ -234,6 +240,7 @@ e_focus_policy_iface_history_new(E_Zone* zone)
    E_LIST_HOOK_APPEND(history_policy->ec_hooks, E_CLIENT_HOOK_MOUSE_DOWN, _focus_policy_history_hook_cb_client_mouse_down, history_policy);
    E_LIST_HOOK_APPEND(history_policy->ec_hooks, E_CLIENT_HOOK_FOCUS_SET, _focus_policy_history_hook_cb_client_focus_set, history_policy);
    E_LIST_HOOK_APPEND(history_policy->ec_hooks, E_CLIENT_HOOK_FOCUS_UNSET, _focus_policy_history_hook_cb_client_focus_unset, history_policy);
+   E_LIST_HOOK_APPEND(history_policy->ec_hooks, E_CLIENT_HOOK_EVAL_END, _focus_policy_history_hook_cb_client_eval_end, history_policy);
 
    // e_comp_object hooks
    E_COMP_COMP_HOOK_APPEND(history_policy->co_hooks, E_COMP_OBJECT_HOOK_LOWER, _focus_policy_hook_history_cb_comp_object_lower, history_policy);
index b31d22e..0cdbbca 100644 (file)
@@ -86,6 +86,12 @@ _focus_policy_topmost_hook_cb_client_focus_unset(void *data, E_Client *ec)
    // TODO:
 }
 
+static void
+_focus_policy_topmost_hook_cb_client_eval_end(void *data, E_Client *ec)
+{
+   // TODO:
+}
+
 static Eina_Bool
 _focus_policy_hook_topmost_cb_comp_object_lower(void *data, E_Client *ec)
 {
@@ -174,6 +180,7 @@ e_focus_policy_iface_topmost_new(E_Zone* zone)
    E_LIST_HOOK_APPEND(topmost_policy->ec_hooks, E_CLIENT_HOOK_MOUSE_DOWN, _focus_policy_topmost_hook_cb_client_mouse_down, topmost_policy);
    E_LIST_HOOK_APPEND(topmost_policy->ec_hooks, E_CLIENT_HOOK_FOCUS_SET, _focus_policy_topmost_hook_cb_client_focus_set, topmost_policy);
    E_LIST_HOOK_APPEND(topmost_policy->ec_hooks, E_CLIENT_HOOK_FOCUS_UNSET, _focus_policy_topmost_hook_cb_client_focus_unset, topmost_policy);
+   E_LIST_HOOK_APPEND(topmost_policy->ec_hooks, E_CLIENT_HOOK_EVAL_END, _focus_policy_topmost_hook_cb_client_eval_end, topmost_policy);
 
    // e_comp_object hooks
    E_COMP_COMP_HOOK_APPEND(topmost_policy->co_hooks, E_COMP_OBJECT_HOOK_LOWER, _focus_policy_hook_topmost_cb_comp_object_lower, topmost_policy);