e_service_quickpanel: fix bug for sending quickpanel_state message 47/217447/1
authorDoyoun Kang <doyoun.kang@samsung.com>
Tue, 12 Nov 2019 01:20:23 +0000 (10:20 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Tue, 12 Nov 2019 01:29:34 +0000 (10:29 +0900)
There was a bug that the window could not hide an indicator after closing the quickpanel in
multi window case.
This was because the window which opened the quickpanel could not get the aux message
"quickpanel_state", "hidden" after closing quickpanel.

Change-Id: I8e4ffe500b13ff1b6e015430103464cc11646cd3

src/bin/services/e_service_quickpanel.c

index 50b3807bbce9fe60ee4db4f3fd7fe9ac3e6bab54..6a825cb2c05464982fc03fcc3b2028ff7c49f74a 100644 (file)
@@ -129,6 +129,8 @@ struct _E_Policy_Quickpanel
    {
       int x, y, w, h;
    } geom;
+
+   E_Client *gesture_target;
 };
 
 struct _Mover_Data
@@ -586,6 +588,21 @@ _e_qp_srv_effect_finish_job_end(E_Policy_Quickpanel *qp)
           e_policy_aux_message_send(qp->below, "quickpanel_state", "hidden", NULL);
      }
 
+   if (qp->gesture_target)
+     {
+        if ((qp->gesture_target != focused) &&
+            (qp->gesture_target != qp->below))
+          {
+             if (qp->effect.final_visible_state)
+               e_policy_aux_message_send(qp->gesture_target, "quickpanel_state", "shown", NULL);
+             else
+               {
+                  e_policy_aux_message_send(qp->gesture_target, "quickpanel_state", "hidden", NULL);
+                  qp->gesture_target = NULL;
+               }
+          }
+     }
+
    EC_CHANGED(qp->ec);
 }
 
@@ -1066,6 +1083,8 @@ _region_obj_cb_gesture_start(void *data, Evas_Object *handler, int nfingers, int
    if (focused)
      e_policy_aux_message_send(focused, "quickpanel_state", "moving", NULL);
 
+   qp->gesture_target = focused;
+
    if ((qp->below) &&
        (qp->below != focused))
      e_policy_aux_message_send(qp->below, "quickpanel_state", "moving", NULL);
@@ -1680,6 +1699,9 @@ _quickpanel_cb_client_remove(void *data, int type, void *event)
    if (qp->below == ev->ec)
      qp->below = NULL;
 
+   if (qp->gesture_target == ev->ec)
+     qp->gesture_target = NULL;
+
    if (!stopping)
      _quickpanel_below_change_eval(data, event);
 end: