jpeg pushed a commit to branch master.

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

commit f00c078b9b08bdd14f9d8922f9b2c550e5e93bbf
Author: JEONGHYUN YUN <jh0506....@samsung.com>
Date:   Mon Aug 1 15:38:50 2016 +0900

    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
---
 src/lib/elementary/elm_panel.c  | 16 ++++++++++++++--
 src/lib/elementary/elm_panel.eo |  5 +++++
 src/lib/elementary/elm_panel.h  |  1 +
 3 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/src/lib/elementary/elm_panel.c b/src/lib/elementary/elm_panel.c
index 826e8c3..6b66825 100644
--- a/src/lib/elementary/elm_panel.c
+++ b/src/lib/elementary/elm_panel.c
@@ -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
diff --git a/src/lib/elementary/elm_panel.eo b/src/lib/elementary/elm_panel.eo
index 0a0d1c6..98df79a 100644
--- a/src/lib/elementary/elm_panel.eo
+++ b/src/lib/elementary/elm_panel.eo
@@ -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;
+   }
+
 }
diff --git a/src/lib/elementary/elm_panel.h b/src/lib/elementary/elm_panel.h
index 1a9c5d0..9dde778 100644
--- a/src/lib/elementary/elm_panel.h
+++ b/src/lib/elementary/elm_panel.h
@@ -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.

-- 


Reply via email to