e_service_quickpanel: changed code to consider unfocusable window while finding below... 57/99957/1 accepted/tizen/3.0/common/20161125.101813 accepted/tizen/3.0/ivi/20161125.082031 accepted/tizen/3.0/mobile/20161125.081949 accepted/tizen/3.0/tv/20161125.082001 accepted/tizen/3.0/wearable/20161125.082017 accepted/tizen/common/20161124.170251 accepted/tizen/ivi/20161125.005038 accepted/tizen/mobile/20161125.004940 accepted/tizen/tv/20161125.004958 accepted/tizen/wearable/20161125.005017 submit/tizen/20161124.131658 submit/tizen_3.0/20161124.131628
authorDoyoun Kang <doyoun.kang@samsung.com>
Thu, 24 Nov 2016 13:03:27 +0000 (22:03 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Thu, 24 Nov 2016 13:03:27 +0000 (22:03 +0900)
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

index 04f2414..b2cc0c5 100644 (file)
@@ -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);