e_focus_policy: make a E_CLIENT_HOOK_FOCUS_LATEST_SET callback 33/297533/1
authorSooChan Lim <sc1.lim@samsung.com>
Thu, 10 Aug 2023 01:49:40 +0000 (10:49 +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_FOCUS_LATEST_SET callback.

Change-Id: I7330df445d46363470d377f3546bb6f92851fb22

src/bin/e_client.c
src/bin/e_client.h
src/bin/e_focus_policy_history.c

index 0f65146..7cb48f5 100644 (file)
@@ -104,6 +104,7 @@ static Eina_Inlist *_e_client_hooks[] =
    [E_CLIENT_HOOK_MOUSE_OUT] = NULL,
    [E_CLIENT_HOOK_MOUSE_DOWN] = NULL,
    [E_CLIENT_HOOK_FOCUS_DEFER_SET] = NULL,
+   [E_CLIENT_HOOK_FOCUS_LATEST_SET] = NULL,
 //#endif
 };
 
@@ -5030,8 +5031,12 @@ e_client_focus_latest_set(E_Client *ec)
 {
    EINA_SAFETY_ON_NULL_RETURN(ec);
 
+#ifdef REFACTOR_FOCUS_POLICY
+   _e_client_hook_call(E_CLIENT_HOOK_FOCUS_LATEST_SET, ec);
+#else
    focus_stack = eina_list_remove(focus_stack, ec);
    focus_stack = eina_list_prepend(focus_stack, ec);
+#endif
 }
 
 EINTERN void
index 199e2c6..950a2a9 100644 (file)
@@ -276,6 +276,7 @@ typedef enum _E_Client_Hook_Point
    E_CLIENT_HOOK_MOUSE_OUT,
    E_CLIENT_HOOK_MOUSE_DOWN,
    E_CLIENT_HOOK_FOCUS_DEFER_SET,
+   E_CLIENT_HOOK_FOCUS_LATEST_SET,
 //#endif
    E_CLIENT_HOOK_LAST,
 } E_Client_Hook_Point;
index 801e252..0c804a1 100644 (file)
@@ -120,6 +120,12 @@ _focus_policy_history_hook_cb_client_focus_defer_set(void *data, E_Client *ec)
 }
 
 static void
+_focus_policy_history_hook_cb_client_focus_latest_set(void *data, E_Client *ec)
+{
+   // TODO:
+}
+
+static void
 _focus_policy_history_hook_cb_client_eval_end(void *data, E_Client *ec)
 {
    // TODO:
@@ -247,6 +253,7 @@ e_focus_policy_iface_history_new(E_Zone* zone)
    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_FOCUS_DEFER_SET, _focus_policy_history_hook_cb_client_focus_defer_set, history_policy);
+   E_LIST_HOOK_APPEND(history_policy->ec_hooks, E_CLIENT_HOOK_FOCUS_LATEST_SET, _focus_policy_history_hook_cb_client_focus_latest_set, 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