elm_panel : add a toggled event triggered when panel toggled in any way.

Summary:
There are 2 ways to toogle the panel, by using elm_panel_toggle API and by interaction such as flick or click on panel.
This toggled event can help us to know the time when the panel toggled by all case.

Reviewers: woohyun, kimcinoo, Hermet, jypark

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4180
This commit is contained in:
JEONGHYUN YUN 2016-08-01 15:38:50 +09:00 committed by Jean-Philippe Andre
parent 8fb2dca520
commit f00c078b9b
3 changed files with 20 additions and 2 deletions

View File

@ -22,9 +22,11 @@
static const char ACCESS_OUTLINE_PART[] = "access.outline";
static const char SIG_TOGGLED[] = "toggled";
static const char SIG_SCROLL[] = "scroll";
static const Evas_Smart_Cb_Description _smart_callbacks[] = {
{SIG_TOGGLED, ""},
{SIG_SCROLL, ""},
{SIG_LAYOUT_FOCUSED, ""}, /**< handled by elm_layout */
{SIG_LAYOUT_UNFOCUSED, ""}, /**< handled by elm_layout */
@ -496,6 +498,8 @@ _panel_toggle(void *data EINA_UNUSED,
edje_object_message_signal_process(wd->resize_obj);
}
efl_event_callback_call(obj, ELM_PANEL_EVENT_TOGGLED, NULL);
}
static Eina_Bool
@ -568,7 +572,11 @@ _state_sync(Evas_Object *obj)
if (open)
{
if (sd->hidden) sd->hidden = EINA_FALSE;
if (sd->hidden)
{
sd->hidden = EINA_FALSE;
efl_event_callback_call(obj, ELM_PANEL_EVENT_TOGGLED, NULL);
}
elm_interface_scrollable_single_direction_set
(obj, ELM_SCROLLER_SINGLE_DIRECTION_HARD);
@ -585,7 +593,11 @@ _state_sync(Evas_Object *obj)
}
else
{
if (!sd->hidden) sd->hidden = EINA_TRUE;
if (!sd->hidden)
{
sd->hidden = EINA_TRUE;
efl_event_callback_call(obj, ELM_PANEL_EVENT_TOGGLED, NULL);
}
if (horizontal)
elm_interface_scrollable_movement_block_set

View File

@ -13,6 +13,7 @@ class Elm.Panel (Elm.Layout, Elm.Interface_Scrollable,
{
legacy_prefix: elm_panel;
eo_prefix: elm_obj_panel;
event_prefix: elm_panel;
methods {
@property orient {
set {
@ -84,4 +85,8 @@ class Elm.Panel (Elm.Layout, Elm.Interface_Scrollable,
Elm.Interface.Atspi_Widget_Action.elm_actions.get;
Efl.Part.part;
}
events {
toggled;
}
}

View File

@ -23,6 +23,7 @@
*
* This widget emits the following signals, besides the ones sent from
* @ref Layout:
* @li @c "toggled" : When the panel has been toggled. (since 1.18)
* @li @c "scroll" : When the content has been scrolled (moved). (since 1.10)
* This signal is emitted only when the panel is scrollable.
* Elm_Panel_Scroll_Info will be passed by @p event_info argument.