forked from enlightenment/efl
efl_ui_slider: change the semantical meaning of step property
Summary: before the step property was used as a relative value. The value that was added in the end was (max-min)*step. Which is quite confusing given the fact that the other APIs in in efl_ui_range_display are also taking values absolut. Other implementations also do so. fix T4834 Subscribers: cedric, #reviewers, #committers Tags: #efl Maniphest Tasks: T4834 Differential Revision: https://phab.enlightenment.org/D9327
This commit is contained in:
parent
1d90b113e0
commit
1bae8ec521
|
@ -4,17 +4,6 @@
|
|||
#include <Efl_Ui.h>
|
||||
#include <Elementary.h>
|
||||
|
||||
static double
|
||||
_step_size_calculate(double min, double max)
|
||||
{
|
||||
double step = 0.0;
|
||||
int steps = 0;
|
||||
|
||||
steps = max - min;
|
||||
if (steps) step = (1.0 / steps);
|
||||
return step;
|
||||
}
|
||||
|
||||
static void
|
||||
_slider_changed_cb(void *data EINA_UNUSED, const Efl_Event *ev)
|
||||
{
|
||||
|
@ -31,7 +20,6 @@ void
|
|||
test_ui_slider(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
Eo *win, *bx, *hbx;
|
||||
double step;
|
||||
|
||||
win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
|
||||
efl_ui_win_type_set(efl_added, EFL_UI_WIN_TYPE_BASIC),
|
||||
|
@ -67,11 +55,10 @@ test_ui_slider(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
|
|||
efl_text_interactive_editable_set(efl_added, EINA_FALSE),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
step = _step_size_calculate(0, 9);
|
||||
efl_add(EFL_UI_SLIDER_CLASS, bx,
|
||||
efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(120, 0)),
|
||||
efl_gfx_hint_align_set(efl_added, 0.5, 0.5),
|
||||
efl_ui_range_step_set(efl_added, step),
|
||||
efl_ui_range_step_set(efl_added, 0.1),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
efl_add(EFL_UI_TEXT_CLASS, bx,
|
||||
|
@ -82,7 +69,7 @@ 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(120, 0)),
|
||||
efl_ui_range_limits_set(efl_added, 10, 145),
|
||||
efl_ui_range_step_set(efl_added, step),
|
||||
efl_ui_range_step_set(efl_added, 9),
|
||||
elm_object_disabled_set(efl_added, EINA_TRUE),
|
||||
efl_pack(bx, efl_added));
|
||||
|
||||
|
@ -98,7 +85,7 @@ test_ui_slider(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
|
|||
efl_add(EFL_UI_SLIDER_CLASS, hbx,
|
||||
efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(0, 160)),
|
||||
efl_ui_range_limits_set(efl_added, 10, 145),
|
||||
efl_ui_range_step_set(efl_added, step),
|
||||
efl_ui_range_step_set(efl_added, 9),
|
||||
efl_ui_range_value_set(efl_added, 70),
|
||||
efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_VERTICAL),
|
||||
efl_pack(hbx, efl_added));
|
||||
|
@ -106,7 +93,7 @@ test_ui_slider(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
|
|||
efl_add(EFL_UI_SLIDER_CLASS, hbx,
|
||||
efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(0, 160)),
|
||||
efl_ui_range_limits_set(efl_added, 10, 145),
|
||||
efl_ui_range_step_set(efl_added, step),
|
||||
efl_ui_range_step_set(efl_added, 9),
|
||||
efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_VERTICAL),
|
||||
elm_object_disabled_set(efl_added, EINA_TRUE),
|
||||
efl_pack(hbx, efl_added));
|
||||
|
@ -115,7 +102,7 @@ test_ui_slider(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
|
|||
efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(0, 160)),
|
||||
efl_ui_range_limits_set(efl_added, 10, 145),
|
||||
efl_ui_range_value_set(efl_added, 35),
|
||||
efl_ui_range_step_set(efl_added, step),
|
||||
efl_ui_range_step_set(efl_added, 9),
|
||||
efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_VERTICAL | EFL_UI_LAYOUT_ORIENTATION_INVERTED),
|
||||
efl_pack(hbx, efl_added));
|
||||
|
||||
|
@ -127,7 +114,7 @@ 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(260, 0)),
|
||||
efl_ui_range_limits_set(efl_added, 0, 150),
|
||||
efl_ui_range_step_set(efl_added, step),
|
||||
efl_ui_range_step_set(efl_added, 9),
|
||||
efl_event_callback_add(efl_added, EFL_UI_SLIDER_EVENT_CHANGED, _slider_changed_cb, NULL),
|
||||
efl_pack(bx, efl_added));
|
||||
}
|
||||
|
|
|
@ -205,6 +205,7 @@ _drag_up(void *data,
|
|||
const char *source EINA_UNUSED)
|
||||
{
|
||||
double step;
|
||||
double relative_step;
|
||||
|
||||
EFL_UI_SLIDER_DATA_GET(data, sd);
|
||||
step = sd->step;
|
||||
|
@ -212,12 +213,13 @@ _drag_up(void *data,
|
|||
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);
|
||||
if (elm_widget_is_legacy(obj))
|
||||
efl_ui_drag_step_move(efl_part(wd->resize_obj, "elm.dragable.slider"),
|
||||
step, step);
|
||||
else
|
||||
efl_ui_drag_step_move(efl_part(wd->resize_obj, "efl.dragable.slider"),
|
||||
step, step);
|
||||
relative_step, relative_step);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -227,6 +229,7 @@ _drag_down(void *data,
|
|||
const char *source EINA_UNUSED)
|
||||
{
|
||||
double step;
|
||||
double relative_step;
|
||||
|
||||
EFL_UI_SLIDER_DATA_GET(data, sd);
|
||||
step = -sd->step;
|
||||
|
@ -234,12 +237,13 @@ _drag_down(void *data,
|
|||
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);
|
||||
if (elm_widget_is_legacy(obj))
|
||||
efl_ui_drag_step_move(efl_part(wd->resize_obj, "elm.dragable.slider"),
|
||||
step, step);
|
||||
else
|
||||
efl_ui_drag_step_move(efl_part(wd->resize_obj, "efl.dragable.slider"),
|
||||
step, step);
|
||||
relative_step, relative_step);
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
|
|
|
@ -52,7 +52,44 @@ EFL_START_TEST(efl_ui_test_slider_events)
|
|||
}
|
||||
EFL_END_TEST
|
||||
|
||||
EFL_START_TEST(efl_ui_test_slider_step)
|
||||
{
|
||||
Eo *slider;
|
||||
Evas *e;
|
||||
Eo *win = win_add();
|
||||
|
||||
efl_gfx_entity_size_set(win, EINA_SIZE2D(400, 100));
|
||||
slider = efl_add(EFL_UI_SLIDER_CLASS, win,
|
||||
efl_event_callback_add(efl_added, EFL_UI_SLIDER_EVENT_CHANGED, slider_changed, NULL),
|
||||
efl_event_callback_add(efl_added, EFL_UI_SLIDER_EVENT_STEADY, slider_changed, NULL),
|
||||
efl_gfx_entity_size_set(efl_added, EINA_SIZE2D(400, 100))
|
||||
);
|
||||
efl_ui_range_limits_set(slider, 0, 100);
|
||||
efl_ui_range_step_set(slider, 10);
|
||||
efl_ui_range_value_set(slider, 20);
|
||||
|
||||
e = evas_object_evas_get(win);
|
||||
|
||||
efl_layout_signal_process(slider, EINA_TRUE);
|
||||
get_me_to_those_events(slider);
|
||||
|
||||
|
||||
int x, y, w, h;
|
||||
int sx, sy, sw, sh;
|
||||
|
||||
evas_object_geometry_get(elm_object_part_content_get(slider, "efl.bar"), &x, &y, &w, &h);
|
||||
evas_object_geometry_get(slider, &sx, &sy, &sw, &sh);
|
||||
evas_event_feed_mouse_in(e, 0, NULL);
|
||||
evas_event_feed_mouse_move(e, x + (w / 2), y + (h / 2), 0, NULL);
|
||||
evas_event_feed_mouse_wheel(e, -1, 1, 0, NULL);
|
||||
evas_event_feed_mouse_up(e, 1, 0, 0, NULL);
|
||||
efl_layout_signal_process(slider, EINA_TRUE);
|
||||
get_me_to_those_events(slider);
|
||||
ck_assert_int_eq(efl_ui_range_value_get(slider), 10);
|
||||
}
|
||||
EFL_END_TEST
|
||||
void efl_ui_test_slider(TCase *tc)
|
||||
{
|
||||
tcase_add_test(tc, efl_ui_test_slider_events);
|
||||
tcase_add_test(tc, efl_ui_test_slider_step);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue