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.
This commit is contained in:
Jaeun Choi 2019-01-21 18:55:10 +09:00
parent 368ab45b26
commit dab4d8d8a4
2 changed files with 69 additions and 0 deletions

View File

@ -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;

View File

@ -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);