e_focus_policy_history: make a E_COMP_OBJECT_HOOK_SHOW callback 23/297523/1
authorSooChan Lim <sc1.lim@samsung.com>
Thu, 10 Aug 2023 00:20:06 +0000 (09:20 +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_COMP_OBJECT_HOOK_SHOW callback.

Change-Id: Ia198bfd048874c38141e8a29903aec1fcf0fe7e1

src/bin/e_comp_object.c
src/bin/e_comp_object.h
src/bin/e_focus_policy_history.c

index 5154993..705968f 100644 (file)
@@ -227,6 +227,7 @@ static Eina_Inlist *_e_comp_object_hooks[] =
 //#ifdef REFACTOR_FOCUS_POLICY
    [E_COMP_OBJECT_HOOK_LOWER] = NULL,
    [E_COMP_OBJECT_HOOK_MOVE] = NULL,
+   [E_COMP_OBJECT_HOOK_SHOW] = NULL,
 //#endif
 };
 
@@ -298,7 +299,8 @@ _e_comp_object_hook_call(E_Comp_Object_Hook_Point hookpoint, E_Client *ec)
             (hookpoint != E_COMP_OBJECT_HOOK_RENDER_UPDATE_LOCK_SET)
 #ifdef REFACTOR_FOCUS_POLICY
             && (hookpoint != E_COMP_OBJECT_HOOK_LOWER) &&
-            (hookpoint != E_COMP_OBJECT_HOOK_MOVE)
+            (hookpoint != E_COMP_OBJECT_HOOK_MOVE) &&
+            (hookpoint != E_COMP_OBJECT_HOOK_SHOW)
 #endif
             )
           {
@@ -2582,7 +2584,9 @@ _e_comp_intercept_show_helper(E_Comp_Object *cw)
                   e_comp_object_dirty(cw->smart_obj);
                   e_comp_object_render(cw->smart_obj);
                }
-
+#ifdef REFACTOR_FOCUS_POLICY
+             // This code executes E_COMP_OBJECT_HOOK_SHOW callback at e_focus_policy_history.c
+#else
              if (!ec->iconic ||
                  e_policy_visibility_client_is_uniconic(ec))
                {
@@ -2592,8 +2596,13 @@ _e_comp_intercept_show_helper(E_Comp_Object *cw)
                   else
                     e_client_focus_defer_set(ec);
                }
+#endif
           }
      }
+
+#ifdef REFACTOR_FOCUS_POLICY
+   _e_comp_object_hook_call(E_COMP_OBJECT_HOOK_SHOW, cw->ec);
+#endif
 }
 
 static void
index 0c3c617..245389d 100644 (file)
@@ -48,6 +48,7 @@ typedef enum _E_Comp_Object_Hook_Point
 //#ifdef REFACTOR_FOCUS_POLICY
    E_COMP_OBJECT_HOOK_LOWER,
    E_COMP_OBJECT_HOOK_MOVE,
+   E_COMP_OBJECT_HOOK_SHOW,
 //#endif
    E_COMP_OBJECT_HOOK_LAST,
 } E_Comp_Object_Hook_Point;
index 8b00d6a..a89b4f0 100644 (file)
@@ -109,6 +109,14 @@ _focus_policy_history_hook_cb_comp_object_move(void *data, E_Client *ec)
    return EINA_TRUE;
 }
 
+static Eina_Bool
+_focus_policy_history_hook_cb_comp_object_show(void *data, E_Client *ec)
+{
+   // TODO:
+
+   return EINA_TRUE;
+}
+
 static void
 _focus_policy_history_del(E_Focus_Policy_Impl *impl)
 {
@@ -178,6 +186,7 @@ e_focus_policy_iface_history_new(E_Zone* zone)
    // 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);
    E_COMP_COMP_HOOK_APPEND(history_policy->co_hooks, E_COMP_OBJECT_HOOK_MOVE,  _focus_policy_history_hook_cb_comp_object_move, history_policy);
+   E_COMP_COMP_HOOK_APPEND(history_policy->co_hooks, E_COMP_OBJECT_HOOK_SHOW,  _focus_policy_history_hook_cb_comp_object_show, history_policy);
 
    return policy_iface;