elm_panel : add a toggled event triggered when panel toggled in any way.
authorJEONGHYUN YUN <jh0506.yun@samsung.com>
Mon, 1 Aug 2016 06:38:50 +0000 (15:38 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Tue, 16 Aug 2016 07:14:21 +0000 (16:14 +0900)
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
src/lib/elementary/elm_panel.eo
src/lib/elementary/elm_panel.h

index 826e8c3..6b66825 100644 (file)
 
 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
index 0a0d1c6..98df79a 100644 (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;
+   }
+
 }
index 1a9c5d0..9dde778 100644 (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.