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 <Efl_Ui.h>
|
||||||
#include <Elementary.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
|
static void
|
||||||
_slider_changed_cb(void *data EINA_UNUSED, const Efl_Event *ev)
|
_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)
|
test_ui_slider(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Eo *win, *bx, *hbx;
|
Eo *win, *bx, *hbx;
|
||||||
double step;
|
|
||||||
|
|
||||||
win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
|
win = efl_add_ref(EFL_UI_WIN_CLASS, NULL,
|
||||||
efl_ui_win_type_set(efl_added, EFL_UI_WIN_TYPE_BASIC),
|
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_text_interactive_editable_set(efl_added, EINA_FALSE),
|
||||||
efl_pack(bx, efl_added));
|
efl_pack(bx, efl_added));
|
||||||
|
|
||||||
step = _step_size_calculate(0, 9);
|
|
||||||
efl_add(EFL_UI_SLIDER_CLASS, bx,
|
efl_add(EFL_UI_SLIDER_CLASS, bx,
|
||||||
efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(120, 0)),
|
efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(120, 0)),
|
||||||
efl_gfx_hint_align_set(efl_added, 0.5, 0.5),
|
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_pack(bx, efl_added));
|
||||||
|
|
||||||
efl_add(EFL_UI_TEXT_CLASS, bx,
|
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_add(EFL_UI_SLIDER_CLASS, bx,
|
||||||
efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(120, 0)),
|
efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(120, 0)),
|
||||||
efl_ui_range_limits_set(efl_added, 10, 145),
|
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),
|
elm_object_disabled_set(efl_added, EINA_TRUE),
|
||||||
efl_pack(bx, efl_added));
|
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_add(EFL_UI_SLIDER_CLASS, hbx,
|
||||||
efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(0, 160)),
|
efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(0, 160)),
|
||||||
efl_ui_range_limits_set(efl_added, 10, 145),
|
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_range_value_set(efl_added, 70),
|
||||||
efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_VERTICAL),
|
efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_VERTICAL),
|
||||||
efl_pack(hbx, efl_added));
|
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_add(EFL_UI_SLIDER_CLASS, hbx,
|
||||||
efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(0, 160)),
|
efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(0, 160)),
|
||||||
efl_ui_range_limits_set(efl_added, 10, 145),
|
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),
|
efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_VERTICAL),
|
||||||
elm_object_disabled_set(efl_added, EINA_TRUE),
|
elm_object_disabled_set(efl_added, EINA_TRUE),
|
||||||
efl_pack(hbx, efl_added));
|
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_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(0, 160)),
|
||||||
efl_ui_range_limits_set(efl_added, 10, 145),
|
efl_ui_range_limits_set(efl_added, 10, 145),
|
||||||
efl_ui_range_value_set(efl_added, 35),
|
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_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_VERTICAL | EFL_UI_LAYOUT_ORIENTATION_INVERTED),
|
||||||
efl_pack(hbx, efl_added));
|
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_add(EFL_UI_SLIDER_CLASS, bx,
|
||||||
efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(260, 0)),
|
efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(260, 0)),
|
||||||
efl_ui_range_limits_set(efl_added, 0, 150),
|
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_event_callback_add(efl_added, EFL_UI_SLIDER_EVENT_CHANGED, _slider_changed_cb, NULL),
|
||||||
efl_pack(bx, efl_added));
|
efl_pack(bx, efl_added));
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,6 +205,7 @@ _drag_up(void *data,
|
||||||
const char *source EINA_UNUSED)
|
const char *source EINA_UNUSED)
|
||||||
{
|
{
|
||||||
double step;
|
double step;
|
||||||
|
double relative_step;
|
||||||
|
|
||||||
EFL_UI_SLIDER_DATA_GET(data, sd);
|
EFL_UI_SLIDER_DATA_GET(data, sd);
|
||||||
step = sd->step;
|
step = sd->step;
|
||||||
|
@ -212,12 +213,13 @@ _drag_up(void *data,
|
||||||
if (efl_ui_layout_orientation_is_inverted(sd->dir)) step *= -1.0;
|
if (efl_ui_layout_orientation_is_inverted(sd->dir)) step *= -1.0;
|
||||||
|
|
||||||
ELM_WIDGET_DATA_GET_OR_RETURN(data, wd);
|
ELM_WIDGET_DATA_GET_OR_RETURN(data, wd);
|
||||||
|
relative_step = step/(sd->val_max - sd->val_min);
|
||||||
if (elm_widget_is_legacy(obj))
|
if (elm_widget_is_legacy(obj))
|
||||||
efl_ui_drag_step_move(efl_part(wd->resize_obj, "elm.dragable.slider"),
|
efl_ui_drag_step_move(efl_part(wd->resize_obj, "elm.dragable.slider"),
|
||||||
step, step);
|
step, step);
|
||||||
else
|
else
|
||||||
efl_ui_drag_step_move(efl_part(wd->resize_obj, "efl.dragable.slider"),
|
efl_ui_drag_step_move(efl_part(wd->resize_obj, "efl.dragable.slider"),
|
||||||
step, step);
|
relative_step, relative_step);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -227,6 +229,7 @@ _drag_down(void *data,
|
||||||
const char *source EINA_UNUSED)
|
const char *source EINA_UNUSED)
|
||||||
{
|
{
|
||||||
double step;
|
double step;
|
||||||
|
double relative_step;
|
||||||
|
|
||||||
EFL_UI_SLIDER_DATA_GET(data, sd);
|
EFL_UI_SLIDER_DATA_GET(data, sd);
|
||||||
step = -sd->step;
|
step = -sd->step;
|
||||||
|
@ -234,12 +237,13 @@ _drag_down(void *data,
|
||||||
if (efl_ui_layout_orientation_is_inverted(sd->dir)) step *= -1.0;
|
if (efl_ui_layout_orientation_is_inverted(sd->dir)) step *= -1.0;
|
||||||
|
|
||||||
ELM_WIDGET_DATA_GET_OR_RETURN(data, wd);
|
ELM_WIDGET_DATA_GET_OR_RETURN(data, wd);
|
||||||
|
relative_step = step/(sd->val_max - sd->val_min);
|
||||||
if (elm_widget_is_legacy(obj))
|
if (elm_widget_is_legacy(obj))
|
||||||
efl_ui_drag_step_move(efl_part(wd->resize_obj, "elm.dragable.slider"),
|
efl_ui_drag_step_move(efl_part(wd->resize_obj, "elm.dragable.slider"),
|
||||||
step, step);
|
step, step);
|
||||||
else
|
else
|
||||||
efl_ui_drag_step_move(efl_part(wd->resize_obj, "efl.dragable.slider"),
|
efl_ui_drag_step_move(efl_part(wd->resize_obj, "efl.dragable.slider"),
|
||||||
step, step);
|
relative_step, relative_step);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
|
|
|
@ -52,7 +52,44 @@ EFL_START_TEST(efl_ui_test_slider_events)
|
||||||
}
|
}
|
||||||
EFL_END_TEST
|
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)
|
void efl_ui_test_slider(TCase *tc)
|
||||||
{
|
{
|
||||||
tcase_add_test(tc, efl_ui_test_slider_events);
|
tcase_add_test(tc, efl_ui_test_slider_events);
|
||||||
|
tcase_add_test(tc, efl_ui_test_slider_step);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue