eunue pushed a commit to branch master.

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

commit dab4d8d8a446f98b4fa2f63e5b948b8f629e460d
Author: Jaeun Choi <jaeun12.c...@samsung.com>
Date:   Mon Jan 21 18:55:10 2019 +0900

    elm_panel: show/hide panel according to hidden status
    
    when panel becomes non-scrollable by elm_panel_scrollable_set() function,
    the panel needs to be shown/hidden according to the hidden status.
    this patch implements it.
---
 data/elementary/themes/edc/elm/panel.edc | 55 ++++++++++++++++++++++++++++++++
 src/lib/elementary/elm_panel.c           | 14 ++++++++
 2 files changed, 69 insertions(+)

diff --git a/data/elementary/themes/edc/elm/panel.edc 
b/data/elementary/themes/edc/elm/panel.edc
index 02dbdadf8f..3f34c7c52d 100644
--- a/data/elementary/themes/edc/elm/panel.edc
+++ b/data/elementary/themes/edc/elm/panel.edc
@@ -541,6 +541,21 @@ group { name: "elm/panel/left/default";
               set_state(PART:"icn", "hidden", 0.0);
          }
       }
+      program {
+         signal: "elm,action,show,no_animate"; source: "elm";
+         action: STATE_SET "default" 0.0;
+         target: "elm.swallow.event";
+         target: "base";
+      }
+      program {
+         signal: "elm,action,show,no_animate"; source: "elm";
+         script {
+            if (get_int(is_rtl) == 0)
+              set_state(PART:"icn", "default", 0.0);
+            else
+              set_state(PART:"icn", "hidden", 0.0);
+         }
+      }
       program {
          signal: "edje,state,rtl"; 
          source: "edje";
@@ -611,6 +626,46 @@ group { name: "elm/panel/left/default";
          transition: ACCELERATE 0.3;
          target: "base";
       }
+      program {
+         signal: "elm,action,hide,no_animate"; source: "elm";
+         action: STATE_SET "hidden" 0.0;
+         target: "elm.swallow.event";
+      }
+      program {
+         signal: "elm,action,hide,no_animate"; source: "elm";
+         script {
+            if (get_int(is_rtl) == 0)
+              set_state(PART:"icn", "hidden", 0.0);
+            else
+              set_state(PART:"icn", "default", 0.0);
+         }
+      }
+      program { name: "hide1_no_animate";
+         signal: "elm,action,hide,no_animate"; source: "elm";
+         script {
+            new x, y, w, h;
+            if (get_int(is_rtl) == 0)
+              {
+                 custom_state(PART:"base", "default", 0.0);
+                 set_state_val(PART:"base", STATE_REL1, -1.0, 0.0);
+                 get_geometry(PART:"elm.swallow.event", x, y, w, h);
+                 set_state_val(PART:"base", STATE_REL1_OFFSET, w, 0);
+               }
+            else
+              {
+                 custom_state(PART:"base", "default", 0.0);
+                 set_state_val(PART:"base", STATE_REL1, -1.0, 0.0);
+                 set_state_val(PART:"base", STATE_REL2, -2.0, 1.0);
+                 get_geometry(PART:"elm.swallow.event", x, y, w, h);
+                 set_state_val(PART:"base", STATE_REL2_OFFSET, -w, 0);
+              }
+         }
+         after: "hide2_no_animate";
+      }
+      program { name: "hide2_no_animate";
+         action: STATE_SET "custom" 0.0;
+         target: "base";
+      }
       program {
          signal: "elm,action,focus_highlight,show"; source: "elm";
          action: STATE_SET "focused" 0.0;
diff --git a/src/lib/elementary/elm_panel.c b/src/lib/elementary/elm_panel.c
index 8e48395f2c..ac2fc2415a 100644
--- a/src/lib/elementary/elm_panel.c
+++ b/src/lib/elementary/elm_panel.c
@@ -1442,6 +1442,20 @@ _elm_panel_scrollable_set(Eo *obj, Elm_Panel_Data *sd, 
Eina_Bool scrollable)
 
         _orient_set_do(obj);
 
+        if (sd->hidden)
+          {
+             elm_layout_signal_emit(obj, "elm,action,hide,no_animate", "elm");
+             evas_object_repeat_events_set(obj, EINA_TRUE);
+          }
+        else
+          {
+             elm_layout_signal_emit(obj, "elm,action,show,no_animate", "elm");
+             evas_object_repeat_events_set(obj, EINA_FALSE);
+          }
+
+        elm_widget_tree_unfocusable_set(obj, sd->hidden);
+        edje_object_message_signal_process(sd->panel_edje);
+
         evas_object_hide(sd->scr_ly);
         elm_layout_content_unset(sd->scr_ly, "elm.swallow.content");
         efl_content_set(efl_part(efl_super(obj, MY_CLASS), 
"elm.swallow.content"), sd->bx);

-- 


Reply via email to