eunue pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=2acfc3e381dc4fc87e3249b0f63f1ba5e0d1c2de

commit 2acfc3e381dc4fc87e3249b0f63f1ba5e0d1c2de
Author: Jaeun Choi <jaeun12.c...@samsung.com>
Date:   Tue Jan 16 13:51:11 2018 +0900

    elm_panel: add exception handling in _drawer_close()
    
    this fixes a bug with scrollable panel not being blocked
    when it is closed. scroll is blocked in _anim_stop_cb(),
    which is called after elm_interface_scrollable_region_bring_in().
    but if panel content is already at the target position, _anim_stop_cb()
    is not called. so there is a need to check content's position and
    handle the exceptional case.
---
 src/lib/elementary/elm_panel.c | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/src/lib/elementary/elm_panel.c b/src/lib/elementary/elm_panel.c
index 1ccf497193..f24874a8d8 100644
--- a/src/lib/elementary/elm_panel.c
+++ b/src/lib/elementary/elm_panel.c
@@ -343,7 +343,7 @@ static void
 _drawer_close(Evas_Object *obj, Evas_Coord w, Evas_Coord h, Eina_Bool anim)
 {
    ELM_PANEL_DATA_GET(obj, sd);
-   int x = 0, y = 0;
+   int x = 0, y = 0, cx, cy;
    Eina_Bool horizontal = EINA_FALSE;
 
    elm_widget_tree_unfocusable_set(obj, EINA_TRUE);
@@ -369,6 +369,25 @@ _drawer_close(Evas_Object *obj, Evas_Coord w, Evas_Coord 
h, Eina_Bool anim)
          break;
      }
 
+   elm_interface_scrollable_content_pos_get(obj, &cx, &cy);
+
+   if ((x == cx) && (y == cy))
+     {
+        if (!sd->freeze)
+          {
+             if (horizontal)
+               elm_interface_scrollable_movement_block_set
+                  (EFL_UI_SCROLL_BLOCK_HORIZONTAL);
+             else
+               elm_interface_scrollable_movement_block_set
+                  (EFL_UI_SCROLL_BLOCK_VERTICAL);
+             sd->freeze = EINA_TRUE;
+             elm_layout_signal_emit(sd->scr_ly, "elm,state,content,hidden", 
"elm");
+          }
+
+        return;
+     }
+
    if (anim)
      {
         if (sd->freeze)

-- 


Reply via email to