e_policy/e_service_quickpanel: add E_EVENT_POLICY_QUICKPANEL_VISIBLE_STATE_CHANGE... 73/248573/1
authorDoyoun Kang <doyoun.kang@samsung.com>
Mon, 30 Nov 2020 06:17:34 +0000 (15:17 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Mon, 30 Nov 2020 06:17:38 +0000 (15:17 +0900)
When a quickpanel window is shown or hidden, then e generates
E_EVENT_POLICY_QUICKPANEL_VISIBLE_STATE_CHANGE event to notify another module.

Change-Id: I00c86c53dba0e5302daa93b1bd4ee9d4d35206ea

src/bin/e_policy.c
src/bin/e_policy.h
src/bin/services/e_service_quickpanel.c

index d71cd8ae81cc27bdbbd52a1cbb585b3b2072c2df..5c765d76938e692307254c26931452ee00dab454 100644 (file)
@@ -47,6 +47,8 @@ static Eina_Inlist *_e_policy_hooks[] =
    [E_POLICY_HOOK_CLIENT_ROTATION_GEOMETRY_SET] = NULL,
 };
 
+E_API int E_EVENT_POLICY_QUICKPANEL_VISIBLE_STATE_CHANGE = -1;
+
 static E_Policy_Client *_e_policy_client_add(E_Client *ec);
 static void        _e_policy_client_del(E_Policy_Client *pc);
 static Eina_Bool   _e_policy_client_normal_check(E_Client *ec);
@@ -2359,6 +2361,8 @@ e_policy_init(void)
    hash_policy_clients = eina_hash_pointer_new(_e_policy_cb_client_data_free);
    hash_policy_desks = eina_hash_pointer_new(_e_policy_cb_desk_data_free);
 
+   E_EVENT_POLICY_QUICKPANEL_VISIBLE_STATE_CHANGE = ecore_event_type_new();
+
    e_policy_stack_init();
    e_policy_wl_init();
    e_policy_wl_aux_hint_init();
index 08990facb5c438f022c9b0aa7b780fecacc1024c..e16feaf215a83228cfedcff92cd598d885fba915 100644 (file)
@@ -205,6 +205,8 @@ E_API extern int E_EVENT_POLICY_INDICATOR_STATE_CHANGE;
 E_API extern int E_EVENT_POLICY_INDICATOR_OPACITY_MODE_CHANGE;
 E_API extern int E_EVENT_POLICY_INDICATOR_VISIBLE_STATE_CHANGE;
 
+E_API extern int E_EVENT_POLICY_QUICKPANEL_VISIBLE_STATE_CHANGE;
+
 EINTERN E_Policy_Config_Desk *e_policy_conf_desk_get_by_nums(E_Policy_Config *conf, unsigned int zone_num, int x, int y);
 EINTERN E_Policy_Client      *e_policy_client_get(E_Client *ec);
 EINTERN void                  e_policy_desk_add(E_Desk *desk);
index 494ebfb1f408d2326349bb7a9fd82898ba162ec5..5718ea52e6f8252c65406c269bb1aa6a89d5f2a6 100644 (file)
@@ -547,6 +547,29 @@ _e_qp_srv_mover_cb_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UN
    E_FREE_FUNC(qp->effect.animator, ecore_animator_del);
 }
 
+static void
+_e_qp_srv_event_free(void *d EINA_UNUSED, E_Event_Client *ev)
+{
+   e_object_unref(E_OBJECT(ev->ec));
+   E_FREE(ev);
+}
+
+static void
+_e_qp_srv_visible_state_change_event(E_Client *ec, int vis_state)
+{
+   E_Event_Client_Property *ev;
+
+   if (!ec) return;
+
+   ev = E_NEW(E_Event_Client_Property, 1);
+   if (!ev) return;
+
+   ev->ec = ec;
+   ev->property = vis_state;
+   e_object_ref(E_OBJECT(ec));
+   ecore_event_add(E_EVENT_POLICY_QUICKPANEL_VISIBLE_STATE_CHANGE, ev, (Ecore_End_Cb)_e_qp_srv_event_free, NULL);
+}
+
 static void
 _e_qp_srv_effect_finish_job_end(E_Policy_Quickpanel *qp)
 {
@@ -607,6 +630,8 @@ _e_qp_srv_effect_finish_job_end(E_Policy_Quickpanel *qp)
           }
      }
 
+   _e_qp_srv_visible_state_change_event(qp->ec, qp->effect.final_visible_state);
+
    EC_CHANGED(qp->ec);
 }