From d030db64ff5605ed7c2a4f346a7ac964f9d4d785 Mon Sep 17 00:00:00 2001 From: Seunghun Lee Date: Thu, 2 Jun 2016 11:31:13 +0900 Subject: [PATCH] services:quickpanel: to prevent quickpanel from showing, use intercept_show hook handler. this patch prevents quickpanel from being displayed for a moment during boot time. Change-Id: Ib1329207c8b628700ae1729bf1658cd276282647 --- src/services/e_mod_quickpanel.c | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/src/services/e_mod_quickpanel.c b/src/services/e_mod_quickpanel.c index 953f75b..9502a8d 100644 --- a/src/services/e_mod_quickpanel.c +++ b/src/services/e_mod_quickpanel.c @@ -43,6 +43,7 @@ struct _Pol_Quickpanel Evas_Object *indi_obj; Evas_Object *handler_obj; + Eina_List *intercept_hooks; Eina_List *hooks; Eina_List *events; Ecore_Idle_Enterer *idle_enterer; @@ -713,6 +714,7 @@ _quickpanel_free(Pol_Quickpanel *qp) E_FREE_FUNC(qp->idle_enterer, ecore_idle_enterer_del); E_FREE_LIST(qp->events, ecore_event_handler_del); E_FREE_LIST(qp->hooks, e_client_hook_del); + E_FREE_LIST(qp->intercept_hooks, e_comp_object_intercept_hook_del); E_FREE(_pol_quickpanel); } @@ -744,13 +746,6 @@ _quickpanel_client_evas_cb_show(void *data, Evas *evas, Evas_Object *obj, void * if (EINA_UNLIKELY(!qp)) return; - if (qp->show_block) - { - QP_HIDE(qp->ec); - evas_object_show(qp->indi_obj); - return; - } - evas_object_show(qp->handler_obj); evas_object_raise(qp->handler_obj); evas_object_hide(qp->indi_obj); @@ -1137,6 +1132,8 @@ _quickpanel_indicator_object_new(Pol_Quickpanel *qp) _region_obj_cb_gesture_move, _region_obj_cb_gesture_end, qp); + evas_object_show(indi_obj); + return indi_obj; } @@ -1163,6 +1160,25 @@ end: return ECORE_CALLBACK_RENEW; } +static Eina_Bool +_quickpanel_intercept_hook_show(void *data, E_Client *ec) +{ + Pol_Quickpanel *qp; + + qp = data; + if (EINA_UNLIKELY(!qp)) + goto end; + + if (qp->ec != ec) + goto end; + + if (qp->show_block) + return EINA_FALSE; + +end: + return EINA_TRUE; +} + #undef E_CLIENT_HOOK_APPEND #define E_CLIENT_HOOK_APPEND(l, t, cb, d) \ do \ @@ -1244,6 +1260,9 @@ e_mod_quickpanel_client_set(E_Client *ec) E_LIST_HANDLER_APPEND(qp->events, E_EVENT_CLIENT_HIDE, _quickpanel_cb_client_hide, qp); E_LIST_HANDLER_APPEND(qp->events, E_EVENT_CLIENT_STACK, _quickpanel_cb_client_stack, qp); + E_COMP_OBJECT_INTERCEPT_HOOK_APPEND(qp->intercept_hooks, E_COMP_OBJECT_INTERCEPT_HOOK_SHOW_HELPER, _quickpanel_intercept_hook_show, qp); + + qp->idle_enterer = ecore_idle_enterer_add(_quickpanel_idle_enter, qp); } -- 2.34.1