e_focus_policy: make a E_CLIENT_HOOK_FOCUS_DEFER_SET callback 32/297532/1
authorSooChan Lim <sc1.lim@samsung.com>
Thu, 10 Aug 2023 01:47:24 +0000 (10:47 +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_DEFER_SET callback.

Change-Id: I3bfd75102f58f66017fca51eaf3dc7fdf7e48015

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

index dcfe30c061e1927c15f4ed8f816f5b94b1cd0567..0f65146cb906f32ef066af69cfa4b5d44ea6f2c3 100644 (file)
@@ -103,6 +103,7 @@ static Eina_Inlist *_e_client_hooks[] =
    [E_CLIENT_HOOK_MOUSE_IN] = NULL,
    [E_CLIENT_HOOK_MOUSE_OUT] = NULL,
    [E_CLIENT_HOOK_MOUSE_DOWN] = NULL,
+   [E_CLIENT_HOOK_FOCUS_DEFER_SET] = NULL,
 //#endif
 };
 
@@ -5059,12 +5060,16 @@ E_API void
 e_client_focus_defer_set(E_Client *ec)
 {
    EINA_SAFETY_ON_NULL_RETURN(ec);
+#ifdef REFACTOR_FOCUS_POLICY
+   _e_client_hook_call(E_CLIENT_HOOK_FOCUS_DEFER_SET, ec);
+#else
    if (e_config->focus_policy_ext == E_FOCUS_EXT_TOP_STACK) return;
 
    ELOGF("FOCUS", "focus defer set", ec);
 
    defer_focus_stack = eina_list_remove(defer_focus_stack, ec);
    defer_focus_stack = eina_list_prepend(defer_focus_stack, ec);
+#endif
 }
 
 EINTERN void
index 9311e7409786f69df318e93fc75db6d893be79b4..199e2c6cc0b1521b9e253893506ef633c7a4dd41 100644 (file)
@@ -275,6 +275,7 @@ typedef enum _E_Client_Hook_Point
    E_CLIENT_HOOK_MOUSE_IN,
    E_CLIENT_HOOK_MOUSE_OUT,
    E_CLIENT_HOOK_MOUSE_DOWN,
+   E_CLIENT_HOOK_FOCUS_DEFER_SET,
 //#endif
    E_CLIENT_HOOK_LAST,
 } E_Client_Hook_Point;
index 0c5f55f60ca7c89dd22909fd85cdf24ec00aa85b..801e2520a3b957b23893aa77ebb299908834e494 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_focus_defer_set(void *data, E_Client *ec)
+{
+   // TODO:
+}
+
 static void
 _focus_policy_history_hook_cb_client_eval_end(void *data, E_Client *ec)
 {
@@ -240,6 +246,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_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_EVAL_END, _focus_policy_history_hook_cb_client_eval_end, history_policy);
 
    // e_comp_object hooks