Add smart callback signals of a scroller. "vbar,drag", "vbar,press", "vbar,unpress...
authorJaehwan Kim <jae.hwan.kim.neo@gmail.com>
Thu, 7 Feb 2013 06:13:31 +0000 (06:13 +0000)
committerJaehwan Kim <jae.hwan.kim.neo@gmail.com>
Thu, 7 Feb 2013 06:13:31 +0000 (06:13 +0000)
SVN revision: 83703

ChangeLog
NEWS
data/themes/default-desktop.edc
data/themes/widgets/scroller.edc
src/lib/elm_genlist.c
src/lib/elm_interface_scrollable.c
src/lib/elm_interface_scrollable.h
src/lib/elm_scroller.c

index e6aeb0a..0e11938 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 2013-02-07  WooHyun Jung
 
         * elm_entry_single_line_set should not change cnp_mode when PLAINTEXT mode.
+
+2013-02-07  Jaehwan Kim
+
+        * Add smart callback signals of a scroller. "vbar,drag", "vbar,press", "vbar,unpress", "hbar,drag", "hbar,press", "hbar,unpress".
diff --git a/NEWS b/NEWS
index e9cf4f6..38a7751 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -32,6 +32,7 @@ Additions:
    * Add "highlighted" and "unhighlighted" callbacks to list, genlist, and gengrid.
    * Add elm_index_delay_change_time_set/get for changing delay change time in index.
    * Add elm_index smart callback - "language,changed".
+   * Add smart callback signals of a scroller. "vbar,drag", "vbar,press", "vbar,unpress", "hbar,drag", "hbar,press", "hbar,unpress".
 
 Improvements:
 
index 1bccc32..3fec70c 100644 (file)
@@ -592,6 +592,16 @@ externals.external: "elm";
                     transition: LINEAR 1.0; \
                     target: "sb_vbar_clip"; \
                 } \
+                program { name: "sb_vbar_press"; \
+                   signal: "mouse,down,1"; \
+                   source: "elm.dragable.vbar"; \
+                   action:  SIGNAL_EMIT "elm,vbar,press" "elm"; \
+                } \
+                program { name: "sb_vbar_unpress"; \
+                   signal: "mouse,up,1"; \
+                   source: "elm.dragable.vbar"; \
+                   action:  SIGNAL_EMIT "elm,vbar,unpress" "elm"; \
+                } \
                 program { name: "sb_vbar_a1_down"; \
                     signal: "mouse,down,1"; \
                     source: "sb_vbar_a1"; \
@@ -692,6 +702,16 @@ externals.external: "elm";
                     transition: LINEAR 1.0; \
                     target: "sb_hbar_clip"; \
                 } \
+                program { name: "sb_hbar_press"; \
+                   signal: "mouse,down,1"; \
+                   source: "elm.dragable.hbar"; \
+                   action:  SIGNAL_EMIT "elm,hbar,press" "elm"; \
+                } \
+                program { name: "sb_hbar_unpress"; \
+                   signal: "mouse,up,1"; \
+                   source: "elm.dragable.hbar"; \
+                   action:  SIGNAL_EMIT "elm,hbar,unpress" "elm"; \
+                } \
                 program { name: "sb_hbar_a1_down"; \
                     signal: "mouse,down,1"; \
                     source: "sb_hbar_a1"; \
index 66d007b..ca0f316 100644 (file)
@@ -386,6 +386,16 @@ group { name: "elm/scroller/base/default";
          transition: LINEAR 0.5;
          target: "sb_vbar_clip";
       }
+      program { name: "sb_vbar_press";
+         signal: "mouse,down,1";
+         source: "elm.dragable.vbar";
+         action:  SIGNAL_EMIT "elm,vbar,press" "elm";
+      }
+      program { name: "sb_vbar_unpress";
+         signal: "mouse,up,1";
+         source: "elm.dragable.vbar";
+         action:  SIGNAL_EMIT "elm,vbar,unpress" "elm";
+      }
 
       program { name: "hbar_show";
          signal: "elm,action,show,hbar";
@@ -443,6 +453,16 @@ group { name: "elm/scroller/base/default";
          transition: LINEAR 0.5;
          target: "sb_hbar_clip";
       }
+      program { name: "sb_hbar_press";
+         signal: "mouse,down,1";
+         source: "elm.dragable.hbar";
+         action:  SIGNAL_EMIT "elm,hbar,press" "elm";
+      }
+      program { name: "sb_hbar_unpress";
+         signal: "mouse,up,1";
+         source: "elm.dragable.hbar";
+         action:  SIGNAL_EMIT "elm,hbar,unpress" "elm";
+      }
 
       program { name: "scroll";
          signal: "elm,action,scroll";
index df98341..4b622ed 100644 (file)
@@ -54,6 +54,12 @@ static const char SIG_EDGE_TOP[] = "edge,top";
 static const char SIG_EDGE_BOTTOM[] = "edge,bottom";
 static const char SIG_EDGE_LEFT[] = "edge,left";
 static const char SIG_EDGE_RIGHT[] = "edge,right";
+static const char SIG_VBAR_DRAG[] = "vbar,drag";
+static const char SIG_VBAR_PRESS[] = "vbar,press";
+static const char SIG_VBAR_UNPRESS[] = "vbar,unpress";
+static const char SIG_HBAR_DRAG[] = "hbar,drag";
+static const char SIG_HBAR_PRESS[] = "hbar,press";
+static const char SIG_HBAR_UNPRESS[] = "hbar,unpress";
 static const char SIG_MULTI_SWIPE_LEFT[] = "multi,swipe,left";
 static const char SIG_MULTI_SWIPE_RIGHT[] = "multi,swipe,right";
 static const char SIG_MULTI_SWIPE_UP[] = "multi,swipe,up";
@@ -95,6 +101,12 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = {
    {SIG_EDGE_BOTTOM, ""},
    {SIG_EDGE_LEFT, ""},
    {SIG_EDGE_RIGHT, ""},
+   {SIG_VBAR_DRAG, ""},
+   {SIG_VBAR_PRESS, ""},
+   {SIG_VBAR_UNPRESS, ""},
+   {SIG_HBAR_DRAG, ""},
+   {SIG_HBAR_PRESS, ""},
+   {SIG_HBAR_UNPRESS, ""},
    {SIG_MULTI_SWIPE_LEFT, ""},
    {SIG_MULTI_SWIPE_RIGHT, ""},
    {SIG_MULTI_SWIPE_UP, ""},
@@ -4509,6 +4521,48 @@ _edge_bottom_cb(Evas_Object *obj,
 }
 
 static void
+_vbar_drag_cb(Evas_Object *obj,
+                void *data __UNUSED__)
+{
+   evas_object_smart_callback_call(obj, SIG_VBAR_DRAG, NULL);
+}
+
+static void
+_vbar_press_cb(Evas_Object *obj,
+                void *data __UNUSED__)
+{
+   evas_object_smart_callback_call(obj, SIG_VBAR_PRESS, NULL);
+}
+
+static void
+_vbar_unpress_cb(Evas_Object *obj,
+                void *data __UNUSED__)
+{
+   evas_object_smart_callback_call(obj, SIG_VBAR_UNPRESS, NULL);
+}
+
+static void
+_hbar_drag_cb(Evas_Object *obj,
+                void *data __UNUSED__)
+{
+   evas_object_smart_callback_call(obj, SIG_HBAR_DRAG, NULL);
+}
+
+static void
+_hbar_press_cb(Evas_Object *obj,
+                void *data __UNUSED__)
+{
+   evas_object_smart_callback_call(obj, SIG_HBAR_PRESS, NULL);
+}
+
+static void
+_hbar_unpress_cb(Evas_Object *obj,
+                void *data __UNUSED__)
+{
+   evas_object_smart_callback_call(obj, SIG_HBAR_UNPRESS, NULL);
+}
+
+static void
 _decorate_item_realize(Elm_Gen_Item *it)
 {
    char buf[1024];
@@ -4673,7 +4727,13 @@ _elm_genlist_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
          elm_scrollable_interface_edge_left_cb_set(_edge_left_cb),
          elm_scrollable_interface_edge_right_cb_set(_edge_right_cb),
          elm_scrollable_interface_edge_top_cb_set(_edge_top_cb),
-         elm_scrollable_interface_edge_bottom_cb_set(_edge_bottom_cb));
+         elm_scrollable_interface_edge_bottom_cb_set(_edge_bottom_cb),
+         elm_scrollable_interface_vbar_drag_cb_set(_vbar_drag_cb),
+         elm_scrollable_interface_vbar_press_cb_set(_vbar_press_cb),
+         elm_scrollable_interface_vbar_unpress_cb_set(_vbar_unpress_cb),
+         elm_scrollable_interface_hbar_drag_cb_set(_hbar_drag_cb),
+         elm_scrollable_interface_hbar_press_cb_set(_hbar_press_cb),
+         elm_scrollable_interface_hbar_unpress_cb_set(_hbar_unpress_cb));
 
    priv->mode = ELM_LIST_SCROLL;
    priv->max_items_per_block = MAX_ITEMS_PER_BLOCK;
index 827e97b..643361a 100644 (file)
@@ -960,6 +960,44 @@ _elm_scroll_anim_stop(Elm_Scrollable_Smart_Interface_Data *sid)
 }
 
 static void
+_elm_scroll_vbar_drag_cb(void *data,
+                           Evas_Object *obj __UNUSED__,
+                           const char *emission __UNUSED__,
+                           const char *source __UNUSED__)
+{
+   Elm_Scrollable_Smart_Interface_Data *sid = data;
+
+   if (sid->cb_func.vbar_drag)
+     sid->cb_func.vbar_drag(sid->obj, NULL);
+
+   _elm_scroll_scroll_bar_read_and_update(sid);
+}
+
+static void
+_elm_scroll_vbar_press_cb(void *data,
+                          Evas_Object *obj __UNUSED__,
+                          const char *emission __UNUSED__,
+                          const char *source __UNUSED__)
+{
+   Elm_Scrollable_Smart_Interface_Data *sid = data;
+
+   if (sid->cb_func.vbar_press)
+     sid->cb_func.vbar_press(sid->obj, NULL);
+}
+
+static void
+_elm_scroll_vbar_unpress_cb(void *data,
+                            Evas_Object *obj __UNUSED__,
+                            const char *emission __UNUSED__,
+                            const char *source __UNUSED__)
+{
+   Elm_Scrollable_Smart_Interface_Data *sid = data;
+
+   if (sid->cb_func.vbar_unpress)
+     sid->cb_func.vbar_unpress(sid->obj, NULL);
+}
+
+static void
 _elm_scroll_edje_drag_v_start_cb(void *data,
                                  Evas_Object *obj __UNUSED__,
                                  const char *emission __UNUSED__,
@@ -997,6 +1035,44 @@ _elm_scroll_edje_drag_v_cb(void *data,
 }
 
 static void
+_elm_scroll_hbar_drag_cb(void *data,
+                         Evas_Object *obj __UNUSED__,
+                         const char *emission __UNUSED__,
+                         const char *source __UNUSED__)
+{
+   Elm_Scrollable_Smart_Interface_Data *sid = data;
+
+   if (sid->cb_func.hbar_drag)
+     sid->cb_func.hbar_drag(sid->obj, NULL);
+
+   _elm_scroll_scroll_bar_read_and_update(sid);
+}
+
+static void
+_elm_scroll_hbar_press_cb(void *data,
+                          Evas_Object *obj __UNUSED__,
+                          const char *emission __UNUSED__,
+                          const char *source __UNUSED__)
+{
+   Elm_Scrollable_Smart_Interface_Data *sid = data;
+
+   if (sid->cb_func.hbar_press)
+     sid->cb_func.hbar_press(sid->obj, NULL);
+}
+
+static void
+_elm_scroll_hbar_unpress_cb(void *data,
+                            Evas_Object *obj __UNUSED__,
+                            const char *emission __UNUSED__,
+                            const char *source __UNUSED__)
+{
+   Elm_Scrollable_Smart_Interface_Data *sid = data;
+
+   if (sid->cb_func.hbar_unpress)
+     sid->cb_func.hbar_unpress(sid->obj, NULL);
+}
+
+static void
 _elm_scroll_edje_drag_h_start_cb(void *data,
                                  Evas_Object *obj __UNUSED__,
                                  const char *emission __UNUSED__,
@@ -3089,7 +3165,7 @@ _scroll_edje_object_attach(Evas_Object *obj)
      (sid->edje_obj, EVAS_CALLBACK_MOVE, _on_edje_move, sid);
 
    edje_object_signal_callback_add
-     (sid->edje_obj, "drag", "elm.dragable.vbar", _elm_scroll_edje_drag_v_cb,
+     (sid->edje_obj, "drag", "elm.dragable.vbar", _elm_scroll_vbar_drag_cb,
      sid);
    edje_object_signal_callback_add
      (sid->edje_obj, "drag,set", "elm.dragable.vbar",
@@ -3107,7 +3183,13 @@ _scroll_edje_object_attach(Evas_Object *obj)
      (sid->edje_obj, "drag,page", "elm.dragable.vbar",
      _elm_scroll_edje_drag_v_cb, sid);
    edje_object_signal_callback_add
-     (sid->edje_obj, "drag", "elm.dragable.hbar", _elm_scroll_edje_drag_h_cb,
+     (sid->edje_obj, "elm,vbar,press", "elm",
+     _elm_scroll_vbar_press_cb, sid);
+   edje_object_signal_callback_add
+     (sid->edje_obj, "elm,vbar,unpress", "elm",
+     _elm_scroll_vbar_unpress_cb, sid);
+   edje_object_signal_callback_add
+     (sid->edje_obj, "drag", "elm.dragable.hbar", _elm_scroll_hbar_drag_cb,
      sid);
    edje_object_signal_callback_add
      (sid->edje_obj, "drag,set", "elm.dragable.hbar",
@@ -3124,6 +3206,12 @@ _scroll_edje_object_attach(Evas_Object *obj)
    edje_object_signal_callback_add
      (sid->edje_obj, "drag,page", "elm.dragable.hbar",
      _elm_scroll_edje_drag_h_cb, sid);
+   edje_object_signal_callback_add
+     (sid->edje_obj, "elm,hbar,press", "elm",
+     _elm_scroll_hbar_press_cb, sid);
+   edje_object_signal_callback_add
+     (sid->edje_obj, "elm,hbar,unpress", "elm",
+     _elm_scroll_hbar_unpress_cb, sid);
 }
 
 static void
@@ -3156,7 +3244,7 @@ _scroll_edje_object_detach(Evas_Object *obj)
      (sid->edje_obj, EVAS_CALLBACK_MOVE, _on_edje_move, sid);
 
    edje_object_signal_callback_del_full
-     (sid->edje_obj, "drag", "elm.dragable.vbar", _elm_scroll_edje_drag_v_cb,
+     (sid->edje_obj, "drag", "elm.dragable.vbar", _elm_scroll_vbar_drag_cb,
      sid);
    edje_object_signal_callback_del_full
      (sid->edje_obj, "drag,set", "elm.dragable.vbar",
@@ -3174,7 +3262,13 @@ _scroll_edje_object_detach(Evas_Object *obj)
      (sid->edje_obj, "drag,page", "elm.dragable.vbar",
      _elm_scroll_edje_drag_v_cb, sid);
    edje_object_signal_callback_del_full
-     (sid->edje_obj, "drag", "elm.dragable.hbar", _elm_scroll_edje_drag_h_cb,
+     (sid->edje_obj, "elm,vbar,press", "elm",
+     _elm_scroll_vbar_press_cb, sid);
+   edje_object_signal_callback_del_full
+     (sid->edje_obj, "elm,vbar,unpress", "elm",
+     _elm_scroll_vbar_unpress_cb, sid);
+   edje_object_signal_callback_del_full
+     (sid->edje_obj, "drag", "elm.dragable.hbar", _elm_scroll_hbar_drag_cb,
      sid);
    edje_object_signal_callback_del_full
      (sid->edje_obj, "drag,set", "elm.dragable.hbar",
@@ -3191,6 +3285,12 @@ _scroll_edje_object_detach(Evas_Object *obj)
    edje_object_signal_callback_del_full
      (sid->edje_obj, "drag,page", "elm.dragable.hbar",
      _elm_scroll_edje_drag_h_cb, sid);
+   edje_object_signal_callback_del_full
+     (sid->edje_obj, "elm,hbar,press", "elm",
+     _elm_scroll_hbar_press_cb, sid);
+   edje_object_signal_callback_del_full
+     (sid->edje_obj, "elm,hbar,unpress", "elm",
+     _elm_scroll_hbar_unpress_cb, sid);
 }
 
 static void
@@ -3496,6 +3596,54 @@ _elm_scroll_edge_bottom_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
 }
 
 static void
+_elm_scroll_vbar_drag_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+{
+   Elm_Scrollable_Smart_Interface_Data *sid = _pd;
+   Elm_Interface_Scrollable_Cb vbar_drag_cb = va_arg(*list, Elm_Interface_Scrollable_Cb);
+   sid->cb_func.vbar_drag = vbar_drag_cb;
+}
+
+static void
+_elm_scroll_vbar_press_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+{
+   Elm_Scrollable_Smart_Interface_Data *sid = _pd;
+   Elm_Interface_Scrollable_Cb vbar_press_cb = va_arg(*list, Elm_Interface_Scrollable_Cb);
+   sid->cb_func.vbar_press = vbar_press_cb;
+}
+
+static void
+_elm_scroll_vbar_unpress_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+{
+   Elm_Scrollable_Smart_Interface_Data *sid = _pd;
+   Elm_Interface_Scrollable_Cb vbar_unpress_cb = va_arg(*list, Elm_Interface_Scrollable_Cb);
+   sid->cb_func.vbar_unpress = vbar_unpress_cb;
+}
+
+static void
+_elm_scroll_hbar_drag_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+{
+   Elm_Scrollable_Smart_Interface_Data *sid = _pd;
+   Elm_Interface_Scrollable_Cb hbar_drag_cb = va_arg(*list, Elm_Interface_Scrollable_Cb);
+   sid->cb_func.hbar_drag = hbar_drag_cb;
+}
+
+static void
+_elm_scroll_hbar_press_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+{
+   Elm_Scrollable_Smart_Interface_Data *sid = _pd;
+   Elm_Interface_Scrollable_Cb hbar_press_cb = va_arg(*list, Elm_Interface_Scrollable_Cb);
+   sid->cb_func.hbar_press = hbar_press_cb;
+}
+
+static void
+_elm_scroll_hbar_unpress_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+{
+   Elm_Scrollable_Smart_Interface_Data *sid = _pd;
+   Elm_Interface_Scrollable_Cb hbar_unpress_cb = va_arg(*list, Elm_Interface_Scrollable_Cb);
+   sid->cb_func.hbar_unpress = hbar_unpress_cb;
+}
+
+static void
 _elm_scroll_content_min_limit_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
 {
    Elm_Scrollable_Smart_Interface_Data *sid = _pd;
@@ -4011,6 +4159,12 @@ _elm_scrollable_interface_constructor(Eo_Class *klass)
            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),
            EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_BOTTOM_CB_SET), _elm_scroll_edge_bottom_cb_set),
+           EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_DRAG_CB_SET), _elm_scroll_vbar_drag_cb_set),
+           EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_PRESS_CB_SET), _elm_scroll_vbar_press_cb_set),
+           EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_UNPRESS_CB_SET), _elm_scroll_vbar_unpress_cb_set),
+           EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_DRAG_CB_SET), _elm_scroll_hbar_drag_cb_set),
+           EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_PRESS_CB_SET), _elm_scroll_hbar_press_cb_set),
+           EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_UNPRESS_CB_SET), _elm_scroll_hbar_unpress_cb_set),
            EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_MIN_LIMIT_CB_SET), _elm_scroll_content_min_limit_cb_set),
            EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_POS_SET), _elm_scroll_content_pos_set),
            EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_POS_GET), _elm_scroll_content_pos_get),
@@ -4065,6 +4219,12 @@ static const Eo_Op_Description op_desc[] = {
      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"),
      EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_BOTTOM_CB_SET, "description here"),
+     EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_DRAG_CB_SET, "description here"),
+     EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_PRESS_CB_SET, "description here"),
+     EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_UNPRESS_CB_SET, "description here"),
+     EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_DRAG_CB_SET, "description here"),
+     EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_PRESS_CB_SET, "description here"),
+     EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_UNPRESS_CB_SET, "description here"),
      EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_MIN_LIMIT_CB_SET, "description here"),
      EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_POS_SET, "description here"),
      EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_POS_GET, "description here"),
index be97aaf..9279577 100644 (file)
@@ -161,6 +161,12 @@ enum
    ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_RIGHT_CB_SET,
    ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_TOP_CB_SET,
    ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_BOTTOM_CB_SET,
+   ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_DRAG_CB_SET,
+   ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_PRESS_CB_SET,
+   ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_UNPRESS_CB_SET,
+   ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_DRAG_CB_SET,
+   ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_PRESS_CB_SET,
+   ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_UNPRESS_CB_SET,
    ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_MIN_LIMIT_CB_SET,
    ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_POS_SET,
    ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_POS_GET,
@@ -337,6 +343,72 @@ enum
 #define elm_scrollable_interface_edge_bottom_cb_set(edge_bottom_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_BOTTOM_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, edge_bottom_cb)
 
 /**
+ * @def elm_scrollable_interface_vbar_drag_cb_set
+ * @since 1.8
+ *
+ * No description supplied by the EAPI.
+ *
+ * @param[in] vbra_drag_cb
+ *
+ */
+#define elm_scrollable_interface_vbar_drag_cb_set(vbar_drag_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_DRAG_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, vbar_drag_cb)
+
+/**
+ * @def elm_scrollable_interface_vbar_press_cb_set
+ * @since 1.8
+ *
+ * No description supplied by the EAPI.
+ *
+ * @param[in] vbra_press_cb
+ *
+ */
+#define elm_scrollable_interface_vbar_press_cb_set(vbar_press_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_PRESS_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, vbar_press_cb)
+
+/**
+ * @def elm_scrollable_interface_vbar_unpress_cb_set
+ * @since 1.8
+ *
+ * No description supplied by the EAPI.
+ *
+ * @param[in] vbra_unpress_cb
+ *
+ */
+#define elm_scrollable_interface_vbar_unpress_cb_set(vbar_unpress_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_UNPRESS_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, vbar_unpress_cb)
+
+/**
+ * @def elm_scrollable_interface_hbar_drag_cb_set
+ * @since 1.8
+ *
+ * No description supplied by the EAPI.
+ *
+ * @param[in] vbra_drag_cb
+ *
+ */
+#define elm_scrollable_interface_hbar_drag_cb_set(hbar_drag_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_DRAG_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, hbar_drag_cb)
+
+/**
+ * @def elm_scrollable_interface_hbar_press_cb_set
+ * @since 1.8
+ *
+ * No description supplied by the EAPI.
+ *
+ * @param[in] vbra_press_cb
+ *
+ */
+#define elm_scrollable_interface_hbar_press_cb_set(hbar_press_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_PRESS_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, hbar_press_cb)
+
+/**
+ * @def elm_scrollable_interface_hbar_unpress_cb_set
+ * @since 1.8
+ *
+ * No description supplied by the EAPI.
+ *
+ * @param[in] vbra_unpress_cb
+ *
+ */
+#define elm_scrollable_interface_hbar_unpress_cb_set(hbar_unpress_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_UNPRESS_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, hbar_unpress_cb)
+
+/**
  * @def elm_scrollable_interface_content_min_limit_cb_set
  * @since 1.8
  *
@@ -882,6 +954,12 @@ struct _Elm_Scrollable_Smart_Interface_Data
       Elm_Interface_Scrollable_Cb edge_right;
       Elm_Interface_Scrollable_Cb edge_top;
       Elm_Interface_Scrollable_Cb edge_bottom;
+      Elm_Interface_Scrollable_Cb vbar_drag;
+      Elm_Interface_Scrollable_Cb vbar_press;
+      Elm_Interface_Scrollable_Cb vbar_unpress;
+      Elm_Interface_Scrollable_Cb hbar_drag;
+      Elm_Interface_Scrollable_Cb hbar_press;
+      Elm_Interface_Scrollable_Cb hbar_unpress;
       Elm_Interface_Scrollable_Min_Limit_Cb content_min_limit;
    } cb_func;
 
index a1fcd35..d95e5c7 100644 (file)
@@ -19,6 +19,12 @@ static const char SIG_EDGE_LEFT[] = "edge,left";
 static const char SIG_EDGE_RIGHT[] = "edge,right";
 static const char SIG_EDGE_TOP[] = "edge,top";
 static const char SIG_EDGE_BOTTOM[] = "edge,bottom";
+static const char SIG_VBAR_DRAG[] = "vbar,drag";
+static const char SIG_VBAR_PRESS[] = "vbar,press";
+static const char SIG_VBAR_UNPRESS[] = "vbar,unpress";
+static const char SIG_HBAR_DRAG[] = "hbar,drag";
+static const char SIG_HBAR_PRESS[] = "hbar,press";
+static const char SIG_HBAR_UNPRESS[] = "hbar,unpress";
 static const Evas_Smart_Cb_Description _smart_callbacks[] =
 {
    {SIG_SCROLL, ""},
@@ -30,6 +36,12 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] =
    {SIG_EDGE_RIGHT, ""},
    {SIG_EDGE_TOP, ""},
    {SIG_EDGE_BOTTOM, ""},
+   {SIG_VBAR_DRAG, ""},
+   {SIG_VBAR_PRESS, ""},
+   {SIG_VBAR_UNPRESS, ""},
+   {SIG_HBAR_DRAG, ""},
+   {SIG_HBAR_PRESS, ""},
+   {SIG_HBAR_UNPRESS, ""},
    {NULL, NULL}
 };
 
@@ -552,6 +564,48 @@ _scroll_drag_stop_cb(Evas_Object *obj,
 }
 
 static void
+_vbar_drag_cb(Evas_Object *obj,
+                void *data __UNUSED__)
+{
+   evas_object_smart_callback_call(obj, SIG_VBAR_DRAG, NULL);
+}
+
+static void
+_vbar_press_cb(Evas_Object *obj,
+                void *data __UNUSED__)
+{
+   evas_object_smart_callback_call(obj, SIG_VBAR_PRESS, NULL);
+}
+
+static void
+_vbar_unpress_cb(Evas_Object *obj,
+                void *data __UNUSED__)
+{
+   evas_object_smart_callback_call(obj, SIG_VBAR_UNPRESS, NULL);
+}
+
+static void
+_hbar_drag_cb(Evas_Object *obj,
+                void *data __UNUSED__)
+{
+   evas_object_smart_callback_call(obj, SIG_HBAR_DRAG, NULL);
+}
+
+static void
+_hbar_press_cb(Evas_Object *obj,
+                void *data __UNUSED__)
+{
+   evas_object_smart_callback_call(obj, SIG_HBAR_PRESS, NULL);
+}
+
+static void
+_hbar_unpress_cb(Evas_Object *obj,
+                void *data __UNUSED__)
+{
+   evas_object_smart_callback_call(obj, SIG_HBAR_UNPRESS, NULL);
+}
+
+static void
 _elm_scroller_smart_content_set(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
 {
    const char *part = va_arg(*list, const char *);
@@ -683,6 +737,12 @@ _elm_scroller_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
          elm_scrollable_interface_animate_stop_cb_set(_scroll_anim_stop_cb),
          elm_scrollable_interface_drag_start_cb_set(_scroll_drag_start_cb),
          elm_scrollable_interface_drag_stop_cb_set(_scroll_drag_stop_cb),
+         elm_scrollable_interface_vbar_drag_cb_set(_vbar_drag_cb),
+         elm_scrollable_interface_vbar_press_cb_set(_vbar_press_cb),
+         elm_scrollable_interface_vbar_unpress_cb_set(_vbar_unpress_cb),
+         elm_scrollable_interface_hbar_drag_cb_set(_hbar_drag_cb),
+         elm_scrollable_interface_hbar_press_cb_set(_hbar_press_cb),
+         elm_scrollable_interface_hbar_unpress_cb_set(_hbar_unpress_cb),
          elm_scrollable_interface_content_min_limit_cb_set(_elm_scroller_content_min_limit_cb));
 }