please update documentation. 

------------------------------------
-Regards, Hermet- 


-----Original Message-----
From: "Jaehwan Kim - Enlightenment Git"<no-re...@enlightenment.org> 
To: <enlightenment-...@lists.sourceforge.net>; 
Cc: 
Sent: 2013-03-15 (금) 20:23:31
Subject: [EGIT] [core/elementary] master 01/01: Add the smart signals in 
scroller. "scroll, left", "scroll, right", "scroll, up", "scroll, down".

jaehwan pushed a commit to branch master.

commit a74d9deb60ce71a34a71382b0fab8b2bb5bf6754
Author: Jaehwan Kim <jae.hwan.kim>@samsung.com>
Date:   Fri Mar 15 18:53:17 2013 +0900

    Add the smart signals in scroller. "scroll,left", "scroll,right", 
"scroll,up", "scroll,down".
---
 ChangeLog                            4 ++
 NEWS                                 1 +
 src/lib/elm_interface_scrollable.c  77 ++++++++++++++++++++++++++++++++++----
 src/lib/elm_interface_scrollable.h  52 +++++++++++++++++++++++++
 src/lib/elm_scroller.c              40 ++++++++++++++++++++
 5 files changed, 167 insertions(+), 7 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 9119356..e4c6074 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1153,3 +1153,7 @@
 2013-03-13  Tae-Hwan Kim (bluezery)
 
         * Fix a memory leak in elm_genlist. Return value of 
elm_genlist_realized_items_get should be freed
+
+2013-03-15  Jaehwan Kim
+
+        * Add the smart signals in scroller. "scroll,left", "scroll,right", 
"scroll,up", "scroll,down".
diff --git a/NEWS b/NEWS
index 0f80ddd..94867f9 100644
--- a/NEWS
+++ b/NEWS
@@ -49,6 +49,7 @@ Additions:
    * Add the config ELM_THUMBSCROLL_HOLD_THRESHOLD.
    * Add elm_naviframe_item_pop_cb_set().
    * Add elm_widget_newest_focus_order_get for knowing the last object(and its 
focus order) which got focus.
+   * Add the smart signals in scroller. "scroll,left", "scroll,right", 
"scroll,up", "scroll,down".
 
 Improvements:
 
diff --git a/src/lib/elm_interface_scrollable.c 
b/src/lib/elm_interface_scrollable.c
index 1d0da0d..ae77a16 100644
--- a/src/lib/elm_interface_scrollable.c
+++ b/src/lib/elm_interface_scrollable.c
@@ -1502,8 +1502,6 @@ _elm_scroll_content_pos_set(Eo *obj, void *_pd, va_list 
*list)
    edje_object_part_drag_value_set
      (sid->edje_obj, "elm.dragable.hbar", vx, 0.0);
 
-   if (sig && ((px != x)  (py != y)))
-     edje_object_signal_emit(sid->edje_obj, "elm,action,scroll", "elm");
    if (!sid->down.bounce_x_animator)
      {
         if (((x < minx) && (0 <= sid->down.dx)) 
@@ -1527,13 +1525,38 @@ _elm_scroll_content_pos_set(Eo *obj, void *_pd, va_list 
*list)
           sid->bouncemey = EINA_FALSE;
      }
 
-   if ((x != px)  (y != py))
-     {
-        if (sid->cb_func.scroll)
-          sid->cb_func.scroll(obj, NULL);
-     }
    if (sig)
      {
+        if ((x != px)  (y != py))
+          {
+             if (sid->cb_func.scroll)
+               sid->cb_func.scroll(obj, NULL);
+             edje_object_signal_emit(sid->edje_obj, "elm,action,scroll", 
"elm");
+             if (x < px)
+               {
+                  if (sid->cb_func.scroll_left)
+                    sid->cb_func.scroll_left(obj, NULL);
+                  edje_object_signal_emit(sid->edje_obj, 
"elm,action,scroll,left", "elm");
+               }
+             if (x > px)
+               {
+                  if (sid->cb_func.scroll_right)
+                    sid->cb_func.scroll_right(obj, NULL);
+                  edje_object_signal_emit(sid->edje_obj, 
"elm,action,scroll,right", "elm");
+               }
+             if (y < py)
+               {
+                  if (sid->cb_func.scroll_up)
+                    sid->cb_func.scroll_up(obj, NULL);
+                  edje_object_signal_emit(sid->edje_obj, 
"elm,action,scroll,up", "elm");
+               }
+             if (y > py)
+               {
+                  if (sid->cb_func.scroll_down)
+                    sid->cb_func.scroll_down(obj, NULL);
+                  edje_object_signal_emit(sid->edje_obj, 
"elm,action,scroll,down", "elm");
+               }
+          }
         if (x != px)
           {
              if (x == minx)
@@ -3574,6 +3597,38 @@ _elm_scroll_scroll_cb_set(Eo *obj EINA_UNUSED, void 
*_pd, va_list *list)
 }
 
 static void
+_elm_scroll_scroll_left_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+{
+   Elm_Scrollable_Smart_Interface_Data *sid = _pd;
+   Elm_Interface_Scrollable_Cb scroll_left_cb = va_arg(*list, 
Elm_Interface_Scrollable_Cb);
+   sid->cb_func.scroll_left = scroll_left_cb;
+}
+
+static void
+_elm_scroll_scroll_right_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+{
+   Elm_Scrollable_Smart_Interface_Data *sid = _pd;
+   Elm_Interface_Scrollable_Cb scroll_right_cb = va_arg(*list, 
Elm_Interface_Scrollable_Cb);
+   sid->cb_func.scroll_right = scroll_right_cb;
+}
+
+static void
+_elm_scroll_scroll_up_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+{
+   Elm_Scrollable_Smart_Interface_Data *sid = _pd;
+   Elm_Interface_Scrollable_Cb scroll_up_cb = va_arg(*list, 
Elm_Interface_Scrollable_Cb);
+   sid->cb_func.scroll_up = scroll_up_cb;
+}
+
+static void
+_elm_scroll_scroll_down_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+{
+   Elm_Scrollable_Smart_Interface_Data *sid = _pd;
+   Elm_Interface_Scrollable_Cb scroll_down_cb = va_arg(*list, 
Elm_Interface_Scrollable_Cb);
+   sid->cb_func.scroll_down = scroll_down_cb;
+}
+
+static void
 _elm_scroll_edge_left_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
 {
    Elm_Scrollable_Smart_Interface_Data *sid = _pd;
@@ -4165,6 +4220,10 @@ _elm_scrollable_interface_constructor(Eo_Class *klass)
            
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_ANIMATE_START_CB_SET),
 _elm_scroll_animate_start_cb_set),
            
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_ANIMATE_STOP_CB_SET),
 _elm_scroll_animate_stop_cb_set),
            
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_CB_SET),
 _elm_scroll_scroll_cb_set),
+           
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_LEFT_CB_SET),
 _elm_scroll_scroll_left_cb_set),
+           
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_RIGHT_CB_SET),
 _elm_scroll_scroll_right_cb_set),
+           
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_UP_CB_SET),
 _elm_scroll_scroll_up_cb_set),
+           
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_DOWN_CB_SET),
 _elm_scroll_scroll_down_cb_set),
            
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_LEFT_CB_SET),
 _elm_scroll_edge_left_cb_set),
            
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_RIGHT_CB_SET),
 _elm_scroll_edge_right_cb_set),
            
EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_TOP_CB_SET),
 _elm_scroll_edge_top_cb_set),
@@ -4227,6 +4286,10 @@ static const Eo_Op_Description op_desc[] = {
      EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_ANIMATE_START_CB_SET, 
"description here"),
      EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_ANIMATE_STOP_CB_SET, 
"description here"),
      EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_CB_SET, 
"description here"),
+     EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_LEFT_CB_SET, 
"description here"),
+     EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_RIGHT_CB_SET, 
"description here"),
+     EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_UP_CB_SET, 
"description here"),
+     EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_DOWN_CB_SET, 
"description here"),
      EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_LEFT_CB_SET, 
"description here"),
      EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_RIGHT_CB_SET, 
"description here"),
      EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_TOP_CB_SET, 
"description here"),
diff --git a/src/lib/elm_interface_scrollable.h 
b/src/lib/elm_interface_scrollable.h
index de5db26..1a001e7 100644
--- a/src/lib/elm_interface_scrollable.h
+++ b/src/lib/elm_interface_scrollable.h
@@ -157,6 +157,10 @@ enum
    ELM_SCROLLABLE_INTERFACE_SUB_ID_ANIMATE_START_CB_SET,
    ELM_SCROLLABLE_INTERFACE_SUB_ID_ANIMATE_STOP_CB_SET,
    ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_CB_SET,
+   ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_LEFT_CB_SET,
+   ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_RIGHT_CB_SET,
+   ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_UP_CB_SET,
+   ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_DOWN_CB_SET,
    ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_LEFT_CB_SET,
    ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_RIGHT_CB_SET,
    ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_TOP_CB_SET,
@@ -299,6 +303,50 @@ enum
 #define elm_scrollable_interface_scroll_cb_set(scroll_cb) 
ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_CB_SET), 
EO_TYPECHECK(Elm_Interface_Scrollable_Cb, scroll_cb)
 
 /**
+ * @def elm_scrollable_interface_scroll_left_cb_set
+ * @since 1.8
+ *
+ * No description supplied by the EAPI.
+ *
+ * @param[in] scroll_left_cb
+ *
+ */
+#define elm_scrollable_interface_scroll_left_cb_set(scroll_left_cb) 
ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_LEFT_CB_SET),
 EO_TYPECHECK(Elm_Interface_Scrollable_Cb, scroll_left_cb)
+
+/**
+ * @def elm_scrollable_interface_scroll_right_cb_set
+ * @since 1.8
+ *
+ * No description supplied by the EAPI.
+ *
+ * @param[in] scroll_right_cb
+ *
+ */
+#define elm_scrollable_interface_scroll_right_cb_set(scroll_right_cb) 
ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_RIGHT_CB_SET),
 EO_TYPECHECK(Elm_Interface_Scrollable_Cb, scroll_right_cb)
+
+/**
+ * @def elm_scrollable_interface_scroll_up_cb_set
+ * @since 1.8
+ *
+ * No description supplied by the EAPI.
+ *
+ * @param[in] scroll_up_cb
+ *
+ */
+#define elm_scrollable_interface_scroll_up_cb_set(scroll_up_cb) 
ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_UP_CB_SET), 
EO_TYPECHECK(Elm_Interface_Scrollable_Cb, scroll_up_cb)
+
+/**
+ * @def elm_scrollable_interface_scroll_down_cb_set
+ * @since 1.8
+ *
+ * No description supplied by the EAPI.
+ *
+ * @param[in] scroll_down_cb
+ *
+ */
+#define elm_scrollable_interface_scroll_down_cb_set(scroll_down_cb) 
ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_DOWN_CB_SET),
 EO_TYPECHECK(Elm_Interface_Scrollable_Cb, scroll_down_cb)
+
+/**
  * @def elm_scrollable_interface_edge_left_cb_set
  * @since 1.8
  *
@@ -951,6 +999,10 @@ struct _Elm_Scrollable_Smart_Interface_Data
       Elm_Interface_Scrollable_Cb animate_start;
       Elm_Interface_Scrollable_Cb animate_stop;
       Elm_Interface_Scrollable_Cb scroll;
+      Elm_Interface_Scrollable_Cb scroll_left;
+      Elm_Interface_Scrollable_Cb scroll_right;
+      Elm_Interface_Scrollable_Cb scroll_up;
+      Elm_Interface_Scrollable_Cb scroll_down;
       Elm_Interface_Scrollable_Cb edge_left;
       Elm_Interface_Scrollable_Cb edge_right;
       Elm_Interface_Scrollable_Cb edge_top;
diff --git a/src/lib/elm_scroller.c b/src/lib/elm_scroller.c
index f78a809..b56c2a6 100644
--- a/src/lib/elm_scroller.c
+++ b/src/lib/elm_scroller.c
@@ -11,6 +11,10 @@ EAPI Eo_Op ELM_OBJ_SCROLLER_BASE_ID = EO_NOOP;
 #define MY_CLASS_NAME "elm_scroller"
 
 static const char SIG_SCROLL[] = "scroll";
+static const char SIG_SCROLL_LEFT[] = "scroll,left";
+static const char SIG_SCROLL_RIGHT[] = "scroll,right";
+static const char SIG_SCROLL_UP[] = "scroll,up";
+static const char SIG_SCROLL_DOWN[] = "scroll,down";
 static const char SIG_SCROLL_ANIM_START[] = "scroll,anim,start";
 static const char SIG_SCROLL_ANIM_STOP[] = "scroll,anim,stop";
 static const char SIG_SCROLL_DRAG_START[] = "scroll,drag,start";
@@ -28,6 +32,10 @@ static const char SIG_HBAR_UNPRESS[] = "hbar,unpress";
 static const Evas_Smart_Cb_Description _smart_callbacks[] =
 {
    {SIG_SCROLL, ""},
+   {SIG_SCROLL_LEFT, ""},
+   {SIG_SCROLL_RIGHT, ""},
+   {SIG_SCROLL_UP, ""},
+   {SIG_SCROLL_DOWN, ""},
    {SIG_SCROLL_ANIM_START, ""},
    {SIG_SCROLL_ANIM_STOP, ""},
    {SIG_SCROLL_DRAG_START, ""},
@@ -536,6 +544,34 @@ _scroll_cb(Evas_Object *obj,
 }
 
 static void
+_scroll_left_cb(Evas_Object *obj,
+           void *data __UNUSED__)
+{
+   evas_object_smart_callback_call(obj, SIG_SCROLL_LEFT, NULL);
+}
+
+static void
+_scroll_right_cb(Evas_Object *obj,
+           void *data __UNUSED__)
+{
+   evas_object_smart_callback_call(obj, SIG_SCROLL_RIGHT, NULL);
+}
+
+static void
+_scroll_up_cb(Evas_Object *obj,
+           void *data __UNUSED__)
+{
+   evas_object_smart_callback_call(obj, SIG_SCROLL_UP, NULL);
+}
+
+static void
+_scroll_down_cb(Evas_Object *obj,
+           void *data __UNUSED__)
+{
+   evas_object_smart_callback_call(obj, SIG_SCROLL_DOWN, NULL);
+}
+
+static void
 _scroll_anim_start_cb(Evas_Object *obj,
                       void *data __UNUSED__)
 {
@@ -735,6 +771,10 @@ _elm_scroller_smart_add(Eo *obj, void *_pd, va_list *list 
EINA_UNUSED)
          elm_scrollable_interface_edge_top_cb_set(_edge_top_cb),
          elm_scrollable_interface_edge_bottom_cb_set(_edge_bottom_cb),
          elm_scrollable_interface_scroll_cb_set(_scroll_cb),
+         elm_scrollable_interface_scroll_left_cb_set(_scroll_left_cb),
+         elm_scrollable_interface_scroll_right_cb_set(_scroll_right_cb),
+         elm_scrollable_interface_scroll_up_cb_set(_scroll_up_cb),
+         elm_scrollable_interface_scroll_down_cb_set(_scroll_down_cb),
          elm_scrollable_interface_animate_start_cb_set(_scroll_anim_start_cb),
          elm_scrollable_interface_animate_stop_cb_set(_scroll_anim_stop_cb),
          elm_scrollable_interface_drag_start_cb_set(_scroll_drag_start_cb),

-- 

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar

 
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to