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)
{
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
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;
}
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;