e_service_quickpanel: skip special windows while finding below/eval windows 98/222398/2
authorDoyoun Kang <doyoun.kang@samsung.com>
Tue, 14 Jan 2020 10:26:01 +0000 (19:26 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Tue, 14 Jan 2020 12:06:31 +0000 (12:06 +0000)
Change-Id: I002336f5803977b23208edc287facd7f895382fb

src/bin/services/e_service_quickpanel.c

index 6a825cb2c05464982fc03fcc3b2028ff7c49f74a..bdab1ada9611b79db4ecfac7043f6b64799047fd 100644 (file)
@@ -174,6 +174,8 @@ static void          _quickpanel_client_evas_cb_show(void *data, Evas *evas, Eva
 static void          _quickpanel_client_evas_cb_hide(void *data, Evas *evas, Evas_Object *obj, void *event);
 static void          _quickpanel_client_evas_cb_move(void *data, Evas *evas, Evas_Object *obj, void *event);
 
+static Eina_Bool     _quickpanel_check_skip_client(E_Client *ec);
+
 inline static Eina_Bool
 _e_qp_srv_is_effect_finish_job_started(E_Policy_Quickpanel *qp)
 {
@@ -1582,6 +1584,23 @@ end:
    return ECORE_CALLBACK_PASS_ON;
 }
 
+static Eina_Bool
+_quickpanel_check_skip_client(E_Client *ec)
+{
+   Eina_Bool skip = EINA_FALSE;
+
+   if (!ec) return EINA_TRUE;
+
+   if (e_policy_client_is_keyboard(ec) ||
+       e_policy_client_is_keyboard_sub(ec) ||
+       e_policy_client_is_cursor(ec))
+     {
+        skip = EINA_TRUE;
+     }
+
+   return skip;
+}
+
 /* NOTE: if the state(show/hide/stack) of windows which are stacked below
  * quickpanel is changed, we close the quickpanel.
  * the most major senario is that quickpanel should be closed when WiFi popup to
@@ -1608,7 +1627,7 @@ _quickpanel_below_visible_client_get(E_Policy_Quickpanel *qp)
    for (ec = e_client_below_get(qp->ec); ec; ec = e_client_below_get(ec))
      {
         if (!ec->visible) continue;
-        if (e_policy_client_is_keyboard(ec)) continue;
+        if (_quickpanel_check_skip_client(ec)) continue;
         if (!E_INTERSECTS(ec->x, ec->y, ec->w, ec->h, zx, zy, zw, zh)) continue;
         return ec;
      }
@@ -1630,7 +1649,7 @@ _quickpanel_below_change_eval(void *data, void *event)
    if (EINA_UNLIKELY((!ev) || (!ev->ec)))
      return;
 
-   if (e_policy_client_is_cursor(ev->ec))
+   if (_quickpanel_check_skip_client(ev->ec))
      return;
 
    qp->changes.below = EINA_TRUE;