forked from enlightenment/efl
Better handling of mouse wheel events for sliders.
SVN revision: 55323
This commit is contained in:
parent
d300d91cee
commit
acea6344eb
|
@ -38,7 +38,7 @@ test_slider(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
|
||||||
|
|
||||||
sl = elm_slider_add(win);
|
sl = elm_slider_add(win);
|
||||||
sl1 = sl;
|
sl1 = sl;
|
||||||
elm_slider_label_set(sl, "Label");
|
elm_slider_label_set(sl, "Horizontal");
|
||||||
elm_slider_icon_set(sl, ic);
|
elm_slider_icon_set(sl, ic);
|
||||||
elm_slider_unit_format_set(sl, "%1.1f units");
|
elm_slider_unit_format_set(sl, "%1.1f units");
|
||||||
elm_slider_span_size_set(sl, 120);
|
elm_slider_span_size_set(sl, 120);
|
||||||
|
@ -54,7 +54,7 @@ test_slider(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
|
||||||
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
|
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
|
||||||
|
|
||||||
sl = elm_slider_add(win);
|
sl = elm_slider_add(win);
|
||||||
elm_slider_label_set(sl, "Label 2");
|
elm_slider_label_set(sl, "Horizontal inverted");
|
||||||
elm_slider_end_set(sl, ic);
|
elm_slider_end_set(sl, ic);
|
||||||
elm_slider_span_size_set(sl, 80);
|
elm_slider_span_size_set(sl, 80);
|
||||||
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
|
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
|
||||||
|
@ -71,7 +71,7 @@ test_slider(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
|
||||||
|
|
||||||
sl = elm_slider_add(win);
|
sl = elm_slider_add(win);
|
||||||
elm_slider_indicator_show_set(sl, EINA_FALSE);
|
elm_slider_indicator_show_set(sl, EINA_FALSE);
|
||||||
elm_slider_label_set(sl, "Label 3");
|
elm_slider_label_set(sl, "Scale doubled");
|
||||||
elm_slider_unit_format_set(sl, "%3.0f units");
|
elm_slider_unit_format_set(sl, "%3.0f units");
|
||||||
elm_slider_span_size_set(sl, 40);
|
elm_slider_span_size_set(sl, 40);
|
||||||
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
|
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
|
||||||
|
@ -92,7 +92,7 @@ test_slider(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
|
||||||
|
|
||||||
sl = elm_slider_add(win);
|
sl = elm_slider_add(win);
|
||||||
elm_slider_icon_set(sl, ic);
|
elm_slider_icon_set(sl, ic);
|
||||||
elm_slider_label_set(sl, "Label 4");
|
elm_slider_label_set(sl, "Vertical inverted");
|
||||||
elm_slider_inverted_set(sl, 1);
|
elm_slider_inverted_set(sl, 1);
|
||||||
elm_slider_unit_format_set(sl, "units");
|
elm_slider_unit_format_set(sl, "units");
|
||||||
elm_slider_span_size_set(sl, 60);
|
elm_slider_span_size_set(sl, 60);
|
||||||
|
@ -106,9 +106,22 @@ test_slider(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
|
||||||
evas_object_show(ic);
|
evas_object_show(ic);
|
||||||
evas_object_show(sl);
|
evas_object_show(sl);
|
||||||
|
|
||||||
|
|
||||||
evas_object_smart_callback_add(sl1, "changed", _change_cb, sl);
|
evas_object_smart_callback_add(sl1, "changed", _change_cb, sl);
|
||||||
|
|
||||||
|
sl = elm_slider_add(win);
|
||||||
|
elm_slider_label_set(sl, "Vertical");
|
||||||
|
elm_slider_unit_format_set(sl, "units");
|
||||||
|
elm_slider_span_size_set(sl, 60);
|
||||||
|
evas_object_size_hint_align_set(sl, 0.5, EVAS_HINT_FILL);
|
||||||
|
evas_object_size_hint_weight_set(sl, 0.0, EVAS_HINT_EXPAND);
|
||||||
|
elm_slider_indicator_format_set(sl, "%1.1f");
|
||||||
|
elm_slider_value_set(sl, 0.2);
|
||||||
|
elm_object_scale_set(sl, 1.0);
|
||||||
|
elm_slider_horizontal_set(sl, EINA_FALSE);
|
||||||
|
elm_box_pack_end(bx, sl);
|
||||||
|
evas_object_show(ic);
|
||||||
|
evas_object_show(sl);
|
||||||
|
|
||||||
evas_object_show(win);
|
evas_object_show(win);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -59,6 +59,8 @@ struct _Widget_Data
|
||||||
Evas_Coord size;
|
Evas_Coord size;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define ELM_SLIDER_INVERTED_FACTOR (-1.0)
|
||||||
|
|
||||||
static const char *widtype = NULL;
|
static const char *widtype = NULL;
|
||||||
static void _del_hook(Evas_Object *obj);
|
static void _del_hook(Evas_Object *obj);
|
||||||
static void _theme_hook(Evas_Object *obj);
|
static void _theme_hook(Evas_Object *obj);
|
||||||
|
@ -361,18 +363,40 @@ _drag_stop(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSE
|
||||||
_indicator_set(data);
|
_indicator_set(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_drag_step(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
|
||||||
|
{
|
||||||
|
_val_fetch(data);
|
||||||
|
_units_set(data);
|
||||||
|
_indicator_set(data);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_drag_up(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
|
_drag_up(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
|
||||||
{
|
{
|
||||||
Widget_Data *wd = elm_widget_data_get(data);
|
double step;
|
||||||
edje_object_part_drag_step(wd->slider, "elm.dragable.slider", -0.05, -0.05);
|
Widget_Data *wd;
|
||||||
|
|
||||||
|
wd = elm_widget_data_get(data);
|
||||||
|
step = 0.05;
|
||||||
|
|
||||||
|
if (wd->inverted) step *= ELM_SLIDER_INVERTED_FACTOR;
|
||||||
|
|
||||||
|
edje_object_part_drag_step(wd->slider, "elm.dragable.slider", step, step);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_drag_down(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
|
_drag_down(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
|
||||||
{
|
{
|
||||||
Widget_Data *wd = elm_widget_data_get(data);
|
double step;
|
||||||
edje_object_part_drag_step(wd->slider, "elm.dragable.slider", 0.05, 0.05);
|
Widget_Data *wd;
|
||||||
|
|
||||||
|
wd = elm_widget_data_get(data);
|
||||||
|
step = -0.05;
|
||||||
|
|
||||||
|
if (wd->inverted) step *= ELM_SLIDER_INVERTED_FACTOR;
|
||||||
|
|
||||||
|
edje_object_part_drag_step(wd->slider, "elm.dragable.slider", step, step);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -417,7 +441,7 @@ elm_slider_add(Evas_Object *parent)
|
||||||
edje_object_signal_callback_add(wd->slider, "drag", "*", _drag, obj);
|
edje_object_signal_callback_add(wd->slider, "drag", "*", _drag, obj);
|
||||||
edje_object_signal_callback_add(wd->slider, "drag,start", "*", _drag_start, obj);
|
edje_object_signal_callback_add(wd->slider, "drag,start", "*", _drag_start, obj);
|
||||||
edje_object_signal_callback_add(wd->slider, "drag,stop", "*", _drag_stop, obj);
|
edje_object_signal_callback_add(wd->slider, "drag,stop", "*", _drag_stop, obj);
|
||||||
edje_object_signal_callback_add(wd->slider, "drag,step", "*", _drag_stop, obj);
|
edje_object_signal_callback_add(wd->slider, "drag,step", "*", _drag_step, obj);
|
||||||
edje_object_signal_callback_add(wd->slider, "drag,page", "*", _drag_stop, obj);
|
edje_object_signal_callback_add(wd->slider, "drag,page", "*", _drag_stop, obj);
|
||||||
// edje_object_signal_callback_add(wd->slider, "drag,set", "*", _drag_stop, obj);
|
// edje_object_signal_callback_add(wd->slider, "drag,set", "*", _drag_stop, obj);
|
||||||
edje_object_signal_callback_add(wd->slider, "mouse,wheel,0,-1", "*", _drag_up, obj);
|
edje_object_signal_callback_add(wd->slider, "mouse,wheel,0,-1", "*", _drag_up, obj);
|
||||||
|
|
Loading…
Reference in New Issue