bu5hm4n pushed a commit to branch master.

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

commit 5636bb8b0b4e78db883bbf9bbb99e940c27c0584
Author: WooHyun Jung <wh0705.j...@samsung.com>
Date:   Mon Aug 26 11:27:18 2019 +0000

    efl_ui_slider: refactor for better data flow and code readability
    
    1. efl_ui_range_value_set only sets value
    2. remove internal eo functions (such as xxx_knob, val_fetch, and val_set)
    3. make access_value_and_text works correctly
    
    @ref T7893
    
    Reviewed-by: Marcel Hollerbach <m...@marcel-hollerbach.de>
    Differential Revision: https://phab.enlightenment.org/D9720
---
 src/bin/elementary/test_ui_slider.c        |  33 +++++
 src/lib/elementary/efl_ui_slider.c         | 204 ++++++++++++-----------------
 src/lib/elementary/efl_ui_slider_private.h |  12 --
 src/tests/elementary/efl_ui_test_slider.c  |  12 +-
 4 files changed, 127 insertions(+), 134 deletions(-)

diff --git a/src/bin/elementary/test_ui_slider.c 
b/src/bin/elementary/test_ui_slider.c
index 11591e0d39..8704a08746 100644
--- a/src/bin/elementary/test_ui_slider.c
+++ b/src/bin/elementary/test_ui_slider.c
@@ -16,6 +16,36 @@ _slider_changed_cb(void *data EINA_UNUSED, const Efl_Event 
*ev)
      efl_ui_range_value_set(ev->object, 100);
 }
 
+static void
+_slider_steady_cb(void *data EINA_UNUSED, const Efl_Event *ev)
+{
+   double val;
+
+   val = efl_ui_range_value_get(ev->object);
+
+   printf("steady callbck : val = %f\n", val);
+}
+
+static void
+_slider_drag_start_cb(void *data EINA_UNUSED, const Efl_Event *ev)
+{
+   double val;
+
+   val = efl_ui_range_value_get(ev->object);
+
+   printf("drag start callbck : val = %f\n", val);
+}
+
+static void
+_slider_drag_stop_cb(void *data EINA_UNUSED, const Efl_Event *ev)
+{
+   double val;
+
+   val = efl_ui_range_value_get(ev->object);
+
+   printf("drag stop callbck : val = %f\n", val);
+}
+
 void
 test_ui_slider(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNUSED)
 {
@@ -37,6 +67,9 @@ test_ui_slider(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event
    efl_add(EFL_UI_SLIDER_CLASS, bx,
            efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(160, 0)),
            efl_gfx_hint_weight_set(efl_added, EVAS_HINT_EXPAND, 0.0),
+           efl_event_callback_add(efl_added, EFL_UI_RANGE_EVENT_STEADY, 
_slider_steady_cb, NULL),
+           efl_event_callback_add(efl_added, 
EFL_UI_SLIDER_EVENT_SLIDER_DRAG_START, _slider_drag_start_cb, NULL),
+           efl_event_callback_add(efl_added, 
EFL_UI_SLIDER_EVENT_SLIDER_DRAG_STOP, _slider_drag_stop_cb, NULL),
            efl_pack(bx, efl_added));
 
    efl_add(EFL_UI_TEXT_CLASS, bx,
diff --git a/src/lib/elementary/efl_ui_slider.c 
b/src/lib/elementary/efl_ui_slider.c
index f3d01ea9c8..7dbdd5395c 100644
--- a/src/lib/elementary/efl_ui_slider.c
+++ b/src/lib/elementary/efl_ui_slider.c
@@ -52,19 +52,39 @@ static void
 _emit_events(Eo *obj, Efl_Ui_Slider_Data *sd)
 {
    efl_event_callback_call(obj, EFL_UI_RANGE_EVENT_CHANGED, NULL);
+
    if (sd->val == sd->val_min)
      efl_event_callback_call(obj, EFL_UI_RANGE_EVENT_MIN_REACHED, NULL);
+
    if (sd->val == sd->val_max)
      efl_event_callback_call(obj, EFL_UI_RANGE_EVENT_MAX_REACHED, NULL);
+
+   // emit accessibility event also if value was changed by API
+   if (_elm_config->atspi_mode)
+     efl_access_value_changed_signal_emit(obj);
 }
 
 static void
-_efl_ui_slider_val_fetch(Evas_Object *obj, Efl_Ui_Slider_Data *sd,  Eina_Bool 
user_event)
+_user_value_update(Evas_Object *obj, double value)
 {
-   double posx = 0.0, posy = 0.0, pos = 0.0, val;
+   EFL_UI_SLIDER_DATA_GET(obj, sd);
+
+   efl_ui_range_value_set(obj, value);
+
+   ecore_timer_del(sd->delay);
+   sd->delay = ecore_timer_add(SLIDER_DELAY_CHANGED_INTERVAL, _delay_change, 
obj);
 
+   evas_object_smart_changed(obj);
+}
+
+static void
+_drag_value_fetch(Evas_Object *obj)
+{
+   EFL_UI_SLIDER_DATA_GET(obj, sd);
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
 
+   double posx = 0.0, posy = 0.0, pos = 0.0, val;
+
    efl_ui_drag_value_get(efl_part(wd->resize_obj, "efl.dragable.slider"),
                            &posx, &posy);
    if (_is_horizontal(sd->dir)) pos = posx;
@@ -79,36 +99,19 @@ _efl_ui_slider_val_fetch(Evas_Object *obj, 
Efl_Ui_Slider_Data *sd,  Eina_Bool us
 
    if (fabs(val - sd->val) > DBL_EPSILON)
      {
-        sd->val = val;
-        if (user_event)
-          {
-             _emit_events(obj, sd);
-             efl_event_callback_legacy_call(obj, EFL_UI_RANGE_EVENT_CHANGED, 
NULL);
-             ecore_timer_del(sd->delay);
-             sd->delay = ecore_timer_add(SLIDER_DELAY_CHANGED_INTERVAL, 
_delay_change, obj);
-          }
+        _user_value_update(obj, val);
      }
 }
 
 static void
-_efl_ui_slider_val_set(Evas_Object *obj, Efl_Ui_Slider_Data *sd)
+_drag_value_update(Evas_Object *obj)
 {
+   EFL_UI_SLIDER_DATA_GET(obj, sd);
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
 
    double pos;
 
-   if (sd->val_max > sd->val_min)
-     {
-        pos = (sd->val - sd->val_min) / (sd->val_max - sd->val_min);
-     }
-   else
-     {
-        pos = 0.0;
-     }
-
-   if (pos < 0.0) pos = 0.0;
-   else if (pos > 1.0)
-     pos = 1.0;
+   pos = (sd->val - sd->val_min) / (sd->val_max - sd->val_min);
 
    if (efl_ui_mirrored_get(obj) ^ 
efl_ui_layout_orientation_is_inverted(sd->dir))
      {
@@ -118,35 +121,6 @@ _efl_ui_slider_val_set(Evas_Object *obj, 
Efl_Ui_Slider_Data *sd)
    efl_ui_drag_value_set(efl_part(wd->resize_obj, "efl.dragable.slider"),
                            pos, pos);
 
-   // emit accessibility event also if value was changed by API
-   if (_elm_config->atspi_mode)
-     efl_access_value_changed_signal_emit(obj);
-
-   evas_object_smart_changed(obj);
-}
-
-static void
-_efl_ui_slider_down_knob(Evas_Object *obj, Efl_Ui_Slider_Data *sd EINA_UNUSED, 
double button_x, double button_y)
-{
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-
-   efl_ui_drag_value_set(efl_part(wd->resize_obj, "efl.dragable.slider"),
-                           button_x, button_y);
-}
-
-static void
-_efl_ui_slider_move_knob(Evas_Object *obj, Efl_Ui_Slider_Data *sd EINA_UNUSED, 
double button_x, double button_y)
-{
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-
-   efl_ui_drag_value_set(efl_part(wd->resize_obj, "efl.dragable.slider"),
-                           button_x, button_y);
-}
-
-static void
-_slider_update(Evas_Object *obj, Eina_Bool user_event)
-{
-   efl_ui_slider_val_fetch(obj, user_event);
    evas_object_smart_changed(obj);
 }
 
@@ -156,7 +130,7 @@ _drag(void *data,
       const char *emission EINA_UNUSED,
       const char *source EINA_UNUSED)
 {
-   _slider_update(data, EINA_TRUE);
+   _drag_value_fetch(data);
 }
 
 static void
@@ -167,8 +141,8 @@ _drag_start(void *data,
 {
    if (!efl_ui_focus_object_focus_get(data))
      elm_object_focus_set(data, EINA_TRUE);
-   _slider_update(data, EINA_TRUE);
    efl_event_callback_call(data, EFL_UI_SLIDER_EVENT_SLIDER_DRAG_START, NULL);
+   _drag_value_fetch(data);
    elm_widget_scroll_freeze_push(data);
 }
 
@@ -178,7 +152,7 @@ _drag_stop(void *data,
            const char *emission EINA_UNUSED,
            const char *source EINA_UNUSED)
 {
-   _slider_update(data, EINA_TRUE);
+   _drag_value_fetch(data);
    efl_event_callback_call(data, EFL_UI_SLIDER_EVENT_SLIDER_DRAG_STOP, NULL);
    elm_widget_scroll_freeze_pop(data);
 }
@@ -189,51 +163,47 @@ _drag_step(void *data,
            const char *emission EINA_UNUSED,
            const char *source EINA_UNUSED)
 {
-   _slider_update(data, EINA_TRUE);
+   _drag_value_fetch(data);
 }
 
 static void
-_drag_up(void *data,
-         Evas_Object *obj EINA_UNUSED,
-         const char *emission EINA_UNUSED,
-         const char *source EINA_UNUSED)
+_drag_up(Evas_Object *obj)
 {
    double step;
    double relative_step;
 
-   EFL_UI_SLIDER_DATA_GET(data, sd);
+   EFL_UI_SLIDER_DATA_GET(obj, sd);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
+
    step = sd->step;
 
    if (efl_ui_layout_orientation_is_inverted(sd->dir)) step *= -1.0;
 
-   ELM_WIDGET_DATA_GET_OR_RETURN(data, wd);
    relative_step = step/(sd->val_max - sd->val_min);
 
    efl_ui_drag_step_move(efl_part(wd->resize_obj, "efl.dragable.slider"),
                            relative_step, relative_step);
-   _slider_update(data, EINA_TRUE);
+   _drag_value_fetch(obj);
 }
 
 static void
-_drag_down(void *data,
-           Evas_Object *obj EINA_UNUSED,
-           const char *emission EINA_UNUSED,
-           const char *source EINA_UNUSED)
+_drag_down(Evas_Object *obj)
 {
    double step;
    double relative_step;
 
-   EFL_UI_SLIDER_DATA_GET(data, sd);
+   EFL_UI_SLIDER_DATA_GET(obj, sd);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
+
    step = -sd->step;
 
    if (efl_ui_layout_orientation_is_inverted(sd->dir)) step *= -1.0;
 
-   ELM_WIDGET_DATA_GET_OR_RETURN(data, wd);
    relative_step = step/(sd->val_max - sd->val_min);
 
    efl_ui_drag_step_move(efl_part(wd->resize_obj, "efl.dragable.slider"),
                            relative_step, relative_step);
-   _slider_update(data, EINA_TRUE);
+   _drag_value_fetch(obj);
 }
 
 static Eina_Bool
@@ -250,32 +220,32 @@ _key_action_drag(Evas_Object *obj, const char *params)
         if (!_is_horizontal(sd->dir))
           return EINA_FALSE;
         if (!efl_ui_layout_orientation_is_inverted(sd->dir))
-          _drag_down(obj, NULL, NULL, NULL);
-        else _drag_up(obj, NULL, NULL, NULL);
+          _drag_down(obj);
+        else _drag_up(obj);
      }
    else if (!strcmp(dir, "right"))
      {
         if (!_is_horizontal(sd->dir))
           return EINA_FALSE;
         if (!efl_ui_layout_orientation_is_inverted(sd->dir))
-          _drag_up(obj, NULL, NULL, NULL);
-        else _drag_down(obj, NULL, NULL, NULL);
+          _drag_up(obj);
+        else _drag_down(obj);
      }
    else if (!strcmp(dir, "up"))
      {
         if (_is_horizontal(sd->dir))
           return EINA_FALSE;
         if (efl_ui_layout_orientation_is_inverted(sd->dir))
-          _drag_up(obj, NULL, NULL, NULL);
-        else _drag_down(obj, NULL, NULL, NULL);
+          _drag_up(obj);
+        else _drag_down(obj);
      }
    else if (!strcmp(dir, "down"))
      {
         if (_is_horizontal(sd->dir))
           return EINA_FALSE;
         if (efl_ui_layout_orientation_is_inverted(sd->dir))
-          _drag_down(obj, NULL, NULL, NULL);
-        else _drag_up(obj, NULL, NULL, NULL);
+          _drag_down(obj);
+        else _drag_up(obj);
      }
    else return EINA_FALSE;
 
@@ -306,22 +276,22 @@ 
_efl_ui_slider_efl_ui_widget_widget_input_event_handler(Eo *obj, Efl_Ui_Slider_D
         if (efl_input_pointer_wheel_delta_get(ev) < 0)
           {
              if (_is_horizontal(sd->dir))
-               _drag_up(obj, NULL, NULL, NULL);
+               _drag_up(obj);
              else
-               _drag_down(obj, NULL, NULL, NULL);
+               _drag_down(obj);
           }
         else
           {
              if (_is_horizontal(sd->dir))
-               _drag_down(obj, NULL, NULL, NULL);
+               _drag_down(obj);
              else
-               _drag_up(obj, NULL, NULL, NULL);
+               _drag_up(obj);
           }
         efl_input_processed_set(ev, EINA_TRUE);
      }
    else return EINA_FALSE;
 
-   _slider_update(obj, EINA_TRUE);
+   _drag_value_fetch(obj);
 
    return EINA_TRUE;
 }
@@ -336,18 +306,18 @@ _efl_ui_slider_efl_ui_widget_on_access_activate(Eo *obj, 
Efl_Ui_Slider_Data *sd,
        (act == EFL_UI_ACTIVATE_RIGHT))
      {
         if (!efl_ui_layout_orientation_is_inverted(sd->dir))
-          _drag_up(obj, NULL, NULL, NULL);
-        else _drag_down(obj, NULL, NULL, NULL);
+          _drag_up(obj);
+        else _drag_down(obj);
      }
    else if ((act == EFL_UI_ACTIVATE_DOWN) ||
             (act == EFL_UI_ACTIVATE_LEFT))
      {
         if (!efl_ui_layout_orientation_is_inverted(sd->dir))
-          _drag_down(obj, NULL, NULL, NULL);
-        else _drag_up(obj, NULL, NULL, NULL);
+          _drag_down(obj);
+        else _drag_up(obj);
      }
 
-   _slider_update(obj, EINA_TRUE);
+   _drag_value_fetch(obj);
 
    return EINA_TRUE;
 }
@@ -426,7 +396,7 @@ _efl_ui_slider_efl_ui_widget_theme_apply(Eo *obj, 
Efl_Ui_Slider_Data *sd)
    else
      efl_layout_signal_emit(obj, "efl,state,inverted,off", "efl");
 
-   efl_ui_slider_val_set(obj);
+   _drag_value_update(obj);
 
    efl_layout_signal_process(wd->resize_obj, EINA_FALSE);
    evas_object_smart_changed(obj);
@@ -441,6 +411,7 @@ _spacer_down_cb(void *data,
                 void *event_info)
 {
    EFL_UI_SLIDER_DATA_GET(data, sd);
+   ELM_WIDGET_DATA_GET_OR_RETURN(data, wd);
 
    Evas_Event_Mouse_Down *ev = event_info;
    Eina_Rect sr;
@@ -463,12 +434,13 @@ _spacer_down_cb(void *data,
         if (button_y < 0) button_y = 0;
      }
 
-   efl_ui_slider_down_knob(data, button_x, button_y);
+   efl_ui_drag_value_set(efl_part(wd->resize_obj, "efl.dragable.slider"),
+                           button_x, button_y);
 
    if (!efl_ui_focus_object_focus_get(data))
      elm_object_focus_set(data, EINA_TRUE);
-   _slider_update(data, EINA_TRUE);
    efl_event_callback_call(data, EFL_UI_SLIDER_EVENT_SLIDER_DRAG_START, NULL);
+   _drag_value_fetch(data);
 }
 
 static void
@@ -478,6 +450,7 @@ _spacer_move_cb(void *data,
                 void *event_info)
 {
    EFL_UI_SLIDER_DATA_GET(data, sd);
+   ELM_WIDGET_DATA_GET_OR_RETURN(data, wd);
 
    Eina_Rect sr;
    double button_x = 0.0, button_y = 0.0;
@@ -504,7 +477,7 @@ _spacer_move_cb(void *data,
         if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
           {
              if (sd->spacer_down) sd->spacer_down = EINA_FALSE;
-             _slider_update(data, EINA_TRUE);
+             _drag_value_fetch(data);
              efl_event_callback_call
                (data, EFL_UI_SLIDER_EVENT_SLIDER_DRAG_STOP, NULL);
              if (sd->frozen)
@@ -527,8 +500,9 @@ _spacer_move_cb(void *data,
              if (button_y < 0) button_y = 0;
           }
 
-        efl_ui_slider_move_knob(data, button_x, button_y);
-        _slider_update(data, EINA_TRUE);
+        efl_ui_drag_value_set(efl_part(wd->resize_obj, "efl.dragable.slider"),
+                              button_x, button_y);
+        _drag_value_fetch(data);
      }
 }
 
@@ -543,7 +517,7 @@ _spacer_up_cb(void *data,
    if (!sd->spacer_down) return;
    if (sd->spacer_down) sd->spacer_down = EINA_FALSE;
 
-   _slider_update(data, EINA_TRUE);
+   _drag_value_fetch(data);
    efl_event_callback_call(data, EFL_UI_SLIDER_EVENT_SLIDER_DRAG_STOP, NULL);
 
    if (sd->frozen)
@@ -691,6 +665,8 @@ 
_efl_ui_slider_efl_ui_layout_orientable_orientation_get(const Eo *obj EINA_UNUSE
 EOLIAN static void
 _efl_ui_slider_efl_ui_range_display_range_limits_set(Eo *obj, 
Efl_Ui_Slider_Data *sd, double min, double max)
 {
+   double val;
+
    if (max < min)
      {
         ERR("Wrong params. min(%lf) is greater than max(%lf).", min, max);
@@ -702,12 +678,15 @@ _efl_ui_slider_efl_ui_range_display_range_limits_set(Eo 
*obj, Efl_Ui_Slider_Data
         return;
      }
    if ((EINA_DBL_EQ(sd->val_min, min)) && (EINA_DBL_EQ(sd->val_max, max))) 
return;
+
    sd->val_min = min;
    sd->val_max = max;
-   if (sd->val < sd->val_min) sd->val = sd->val_min;
-   if (sd->val > sd->val_max) sd->val = sd->val_max;
 
-   efl_ui_slider_val_set(obj);
+   val = sd->val;
+   if (val < sd->val_min) val = sd->val_min;
+   if (val > sd->val_max) val = sd->val_max;
+
+   efl_ui_range_value_set(obj, val);
 }
 
 EOLIAN static void
@@ -734,11 +713,8 @@ _efl_ui_slider_efl_ui_range_display_range_value_set(Eo 
*obj, Efl_Ui_Slider_Data
    if (EINA_DBL_EQ(val, sd->val)) return;
    sd->val = val;
 
-   if (sd->val < sd->val_min) sd->val = sd->val_min;
-   if (sd->val > sd->val_max) sd->val = sd->val_max;
-
+   _drag_value_update(obj);
    _emit_events(obj, sd);
-   efl_ui_slider_val_set(obj);
 }
 
 EOLIAN static double
@@ -789,16 +765,16 @@ _efl_ui_slider_efl_access_value_value_and_text_get(const 
Eo *obj EINA_UNUSED, Ef
 EOLIAN static Eina_Bool
 _efl_ui_slider_efl_access_value_value_and_text_set(Eo *obj, Efl_Ui_Slider_Data 
*sd, double value, const char *text EINA_UNUSED)
 {
-   double oldval = sd->val;
-
    if (value < sd->val_min) value = sd->val_min;
    if (value > sd->val_max) value = sd->val_max;
 
    efl_event_callback_call(obj, EFL_UI_SLIDER_EVENT_SLIDER_DRAG_START, NULL);
-   sd->val = value;
-   efl_ui_slider_val_set(obj);
-   sd->val = oldval;
-   _slider_update(obj, EINA_TRUE);
+
+   if (fabs(value - sd->val) > DBL_EPSILON)
+     {
+        _user_value_update(obj, value);
+     }
+
    efl_event_callback_call(obj, EFL_UI_SLIDER_EVENT_SLIDER_DRAG_STOP, NULL);
 
    return EINA_TRUE;
@@ -832,17 +808,5 @@ 
_efl_ui_slider_efl_access_widget_action_elm_actions_get(const Eo *obj EINA_UNUSE
 }
 
 // A11Y Accessibility - END
-/* Internal EO APIs and hidden overrides */
-
-EFL_VOID_FUNC_BODYV(efl_ui_slider_val_fetch, EFL_FUNC_CALL(user_event), 
Eina_Bool user_event)
-EFL_VOID_FUNC_BODY(efl_ui_slider_val_set)
-EFL_VOID_FUNC_BODYV(efl_ui_slider_down_knob, EFL_FUNC_CALL(button_x, 
button_y), double button_x, double button_y)
-EFL_VOID_FUNC_BODYV(efl_ui_slider_move_knob, EFL_FUNC_CALL(button_x, 
button_y), double button_x, double button_y)
-
-#define EFL_UI_SLIDER_EXTRA_OPS \
-   EFL_UI_SLIDER_VAL_FETCH_OPS(efl_ui_slider), \
-   EFL_UI_SLIDER_VAL_SET_OPS(efl_ui_slider), \
-   EFL_UI_SLIDER_DOWN_KNOB_OPS(efl_ui_slider), \
-   EFL_UI_SLIDER_MOVE_KNOB_OPS(efl_ui_slider), \
 
 #include "efl_ui_slider.eo.c"
diff --git a/src/lib/elementary/efl_ui_slider_private.h 
b/src/lib/elementary/efl_ui_slider_private.h
index 7a6bec4bca..76a83b2d92 100644
--- a/src/lib/elementary/efl_ui_slider_private.h
+++ b/src/lib/elementary/efl_ui_slider_private.h
@@ -22,18 +22,6 @@ struct _Efl_Ui_Slider_Data
  * @}
  */
 
-# define EFL_UI_SLIDER_VAL_FETCH_OPS(_pfx) \
-   EFL_OBJECT_OP_FUNC(efl_ui_slider_val_fetch, _##_pfx##_val_fetch)
-
-# define EFL_UI_SLIDER_VAL_SET_OPS(_pfx) \
-   EFL_OBJECT_OP_FUNC(efl_ui_slider_val_set, _##_pfx##_val_set)
-
-# define EFL_UI_SLIDER_DOWN_KNOB_OPS(_pfx) \
-   EFL_OBJECT_OP_FUNC(efl_ui_slider_down_knob, _##_pfx##_down_knob)
-
-# define EFL_UI_SLIDER_MOVE_KNOB_OPS(_pfx) \
-   EFL_OBJECT_OP_FUNC(efl_ui_slider_move_knob, _##_pfx##_move_knob)
-
 #define EFL_UI_SLIDER_DATA_GET(o, sd) \
   Efl_Ui_Slider_Data * sd = efl_data_scope_get(o, EFL_UI_SLIDER_CLASS)
 
diff --git a/src/tests/elementary/efl_ui_test_slider.c 
b/src/tests/elementary/efl_ui_test_slider.c
index a891841329..6547ae406e 100644
--- a/src/tests/elementary/efl_ui_test_slider.c
+++ b/src/tests/elementary/efl_ui_test_slider.c
@@ -13,8 +13,12 @@ slider_changed(void *data EINA_UNUSED, const Efl_Event *ev)
 {
    event_counter++;
    if (event_counter == 1)
-     efl_event_callback_del(ev->object, EFL_UI_RANGE_EVENT_CHANGED, 
slider_changed, NULL);
+     efl_event_callback_del(ev->object, EFL_UI_SLIDER_EVENT_SLIDER_DRAG_START, 
slider_changed, NULL);
    else if (event_counter == 2)
+     efl_event_callback_del(ev->object, EFL_UI_RANGE_EVENT_CHANGED, 
slider_changed, NULL);
+   else if (event_counter == 3)
+     efl_event_callback_del(ev->object, EFL_UI_SLIDER_EVENT_SLIDER_DRAG_STOP, 
slider_changed, NULL);
+   else if (event_counter == 4)
      ecore_main_loop_quit();
 }
 
@@ -28,6 +32,8 @@ EFL_START_TEST(efl_ui_test_slider_events)
    slider = efl_add(EFL_UI_SLIDER_CLASS, win,
                 efl_event_callback_add(efl_added, EFL_UI_RANGE_EVENT_CHANGED, 
slider_changed, NULL),
                 efl_event_callback_add(efl_added, EFL_UI_RANGE_EVENT_STEADY, 
slider_changed, NULL),
+                efl_event_callback_add(efl_added, 
EFL_UI_SLIDER_EVENT_SLIDER_DRAG_START, slider_changed, NULL),
+                efl_event_callback_add(efl_added, 
EFL_UI_SLIDER_EVENT_SLIDER_DRAG_STOP, slider_changed, NULL),
                 efl_gfx_entity_size_set(efl_added, EINA_SIZE2D(400, 100))
                 );
 
@@ -48,7 +54,7 @@ EFL_START_TEST(efl_ui_test_slider_events)
    evas_event_feed_mouse_move(e, sx + (sw / 2), sy + (sh / 2), 0, NULL);
    evas_event_feed_mouse_up(e, 1, 0, 0, NULL);
    ecore_main_loop_begin();
-   ck_assert_int_eq(event_counter, 2);
+   ck_assert_int_eq(event_counter, 4);
 }
 EFL_END_TEST
 
@@ -62,6 +68,8 @@ EFL_START_TEST(efl_ui_test_slider_step)
    slider = efl_add(EFL_UI_SLIDER_CLASS, win,
                 efl_event_callback_add(efl_added, EFL_UI_RANGE_EVENT_CHANGED, 
slider_changed, NULL),
                 efl_event_callback_add(efl_added, EFL_UI_RANGE_EVENT_STEADY, 
slider_changed, NULL),
+                efl_event_callback_add(efl_added, 
EFL_UI_SLIDER_EVENT_SLIDER_DRAG_START, slider_changed, NULL),
+                efl_event_callback_add(efl_added, 
EFL_UI_SLIDER_EVENT_SLIDER_DRAG_STOP, slider_changed, NULL),
                 efl_gfx_entity_size_set(efl_added, EINA_SIZE2D(400, 100))
                 );
    efl_ui_range_limits_set(slider, 0, 100);

-- 


Reply via email to