From 218b860af844f46a1bf7d3d28e3388d2014f3f14 Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Thu, 24 Nov 2016 22:03:27 +0900 Subject: [PATCH] e_service_quickpanel: changed code to consider unfocusable window while finding below window. there was a bug that the disabling scroll the quickpanel was not working when the window set the skip_focus. Change-Id: I10474afddd35ca55a1b234d8a77ee9f24c3b1eeb --- src/bin/services/e_service_quickpanel.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/bin/services/e_service_quickpanel.c b/src/bin/services/e_service_quickpanel.c index 04f2414..b2cc0c5 100644 --- a/src/bin/services/e_service_quickpanel.c +++ b/src/bin/services/e_service_quickpanel.c @@ -84,6 +84,7 @@ struct _E_Policy_Quickpanel E_Maximize saved_maximize; Eina_Bool show_block; + Eina_Bool need_scroll_update; Eina_List *clients; /* list of E_QP_Client */ }; @@ -880,6 +881,9 @@ _quickpanel_client_evas_cb_hide(void *data, Evas *evas, Evas_Object *obj, void * evas_object_hide(qp->handler_obj); evas_object_show(qp->indi_obj); + + if (qp->need_scroll_update) + _e_qp_client_scrollable_update(); } static void @@ -1110,8 +1114,6 @@ _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 (!ec->icccm.accepts_focus) continue; - return ec; } @@ -1282,9 +1284,12 @@ _quickpanel_idle_enter(void *data) * hide the quickpanel, if below client is the stacking client. * it means to find out whether or not it was launched. */ - if ((qp->stacking == below) && - (qp->ec->visible)) - e_service_quickpanel_hide(); + if (qp->below->icccm.accepts_focus) + { + if ((qp->stacking == below) && + (qp->ec->visible)) + e_service_quickpanel_hide(); + } _e_qp_client_scrollable_update(); } @@ -1352,6 +1357,13 @@ _e_qp_client_scrollable_update(void) EINA_SAFETY_ON_NULL_RETURN_VAL(qp->ec, EINA_FALSE); EINA_SAFETY_ON_TRUE_RETURN_VAL(e_object_is_del(E_OBJECT(qp->ec)), EINA_FALSE); + if (qp->ec->visible) + { + qp->need_scroll_update = EINA_TRUE; + return EINA_TRUE; + } + qp->need_scroll_update = EINA_FALSE; + if (!qp->below) { evas_object_pass_events_set(qp->handler_obj, EINA_FALSE); -- 2.7.4