On Thu, 18 Apr 2013 02:11:58 +0900 Daniel Juyung Seo <seojuyu...@gmail.com> said:
> It looks like the default "thumbscroll_acceleration_threshold" is too big. > Please refer the inline comments. are they actually? 500pix/sec isnt that much its a whole SECOND.. to move 500pixels... > > On Wed, Apr 17, 2013 at 9:58 PM, Hosang Kim - Enlightenment Git < > no-re...@enlightenment.org> wrote: > > > jaehwan pushed a commit to branch master. > > > > commit 81aa9a3fabdd7938326973e93031ba35ed28d283 > > Author: Hosang Kim <hosang12....@samsung.com> > > Date: Wed Apr 17 21:46:21 2013 +0900 > > > > [Scroller] changed acceleration constant values > > --- > > config/default/base.src | 3 + > > config/mobile/base.src | 3 + > > config/standard/base.src | 3 + > > src/bin/config.c | 147 > > ++++++++++++++++++++++++++++++++++++- > > src/lib/elm_config.c | 48 ++++++++++++ > > src/lib/elm_config.h | 61 +++++++++++++++ > > src/lib/elm_interface_scrollable.c | 14 ++-- > > src/lib/elm_priv.h | 3 + > > 8 files changed, 274 insertions(+), 8 deletions(-) > > > > diff --git a/config/default/base.src b/config/default/base.src > > index c928779..8177b3c 100644 > > --- a/config/default/base.src > > +++ b/config/default/base.src > > @@ -9,6 +9,9 @@ group "Elm_Config" struct { > > value "thumbscroll_friction" double: 1.0; > > value "thumbscroll_bounce_friction" double: 0.5; > > value "thumbscroll_bounce_enable" uchar: 1; > > + value "thumbscroll_acceleration_threshold" double: 500.0; > > > > 500 pixels per second is too big. > > > > + value "thumbscroll_acceleration_time_limit" double: 0.7; > > + value "thumbscroll_acceleration_weight" double: 1.5; > > value "page_scroll_friction" double: 0.5; > > value "bring_in_scroll_friction" double: 0.5; > > value "zoom_friction" double: 0.5; > > diff --git a/config/mobile/base.src b/config/mobile/base.src > > index 604154e..9037022 100644 > > --- a/config/mobile/base.src > > +++ b/config/mobile/base.src > > @@ -9,6 +9,9 @@ group "Elm_Config" struct { > > value "thumbscroll_friction" double: 1.0; > > value "thumbscroll_bounce_friction" double: 0.5; > > value "thumbscroll_bounce_enable" uchar: 1; > > + value "thumbscroll_acceleration_threshold" double: 2000.0; > > > > 2000 pixels per second is way too big. > > > > + value "thumbscroll_acceleration_time_limit" double: 0.5; > > + value "thumbscroll_acceleration_weight" double: 1.5; > > value "page_scroll_friction" double: 0.5; > > value "bring_in_scroll_friction" double: 0.5; > > value "zoom_friction" double: 0.5; > > diff --git a/config/standard/base.src b/config/standard/base.src > > index 4870f39..8bd1a18 100644 > > --- a/config/standard/base.src > > +++ b/config/standard/base.src > > @@ -9,6 +9,9 @@ group "Elm_Config" struct { > > value "thumbscroll_friction" double: 1.0; > > value "thumbscroll_bounce_friction" double: 0.5; > > value "thumbscroll_bounce_enable" uchar: 0; > > + value "thumbscroll_acceleration_threshold" double: 500.0; > > > > 500 pixels per second is too big. > > > > + value "thumbscroll_acceleration_time_limit" double: 0.7; > > + value "thumbscroll_acceleration_weight" double: 1.5; > > value "page_scroll_friction" double: 0.5; > > value "bring_in_scroll_friction" double: 0.5; > > value "zoom_friction" double: 0.5; > > diff --git a/src/bin/config.c b/src/bin/config.c > > index 3d4b960..7138493 100644 > > --- a/src/bin/config.c > > +++ b/src/bin/config.c > > @@ -422,6 +422,81 @@ tssf_change(void *data __UNUSED__, > > } > > > > static void > > +tsat_round(void *data __UNUSED__, > > + Evas_Object *obj, > > + void *event_info __UNUSED__) > > +{ > > + double val = elm_slider_value_get(obj); > > + double v; > > + > > + v = ((double)((int)(val * 10.0))) / 10.0; > > + if (v != val) elm_slider_value_set(obj, v); > > +} > > + > > +static void > > +tsat_change(void *data __UNUSED__, > > + Evas_Object *obj, > > + void *event_info __UNUSED__) > > +{ > > + double tsat = > > elm_config_scroll_thumbscroll_acceleration_threshold_get(); > > + double val = elm_slider_value_get(obj); > > + > > + if (tsat == val) return; > > + elm_config_scroll_thumbscroll_acceleration_threshold_set(val); > > + elm_config_all_flush(); > > +} > > + > > +static void > > +tsatl_round(void *data __UNUSED__, > > + Evas_Object *obj, > > + void *event_info __UNUSED__) > > +{ > > + double val = elm_slider_value_get(obj); > > + double v; > > + > > + v = ((double)((int)(val * 10.0))) / 10.0; > > + if (v != val) elm_slider_value_set(obj, v); > > +} > > + > > +static void > > +tsatl_change(void *data __UNUSED__, > > + Evas_Object *obj, > > + void *event_info __UNUSED__) > > +{ > > + double tsatl = > > elm_config_scroll_thumbscroll_acceleration_time_limit_get(); > > + double val = elm_slider_value_get(obj); > > + > > + if (tsatl == val) return; > > + elm_config_scroll_thumbscroll_acceleration_time_limit_set(val); > > + elm_config_all_flush(); > > +} > > + > > +static void > > +tsaw_round(void *data __UNUSED__, > > + Evas_Object *obj, > > + void *event_info __UNUSED__) > > +{ > > + double val = elm_slider_value_get(obj); > > + double v; > > + > > + v = ((double)((int)(val * 10.0))) / 10.0; > > + if (v != val) elm_slider_value_set(obj, v); > > +} > > + > > +static void > > +tsaw_change(void *data __UNUSED__, > > + Evas_Object *obj, > > + void *event_info __UNUSED__) > > +{ > > + double tsaw = elm_config_scroll_thumbscroll_acceleration_weight_get(); > > + double val = elm_slider_value_get(obj); > > + > > + if (tsaw == val) return; > > + elm_config_scroll_thumbscroll_acceleration_weight_set(val); > > + elm_config_all_flush(); > > +} > > + > > +static void > > cf_enable(void *data, > > Evas_Object *obj, > > void *event_info __UNUSED__) > > @@ -974,8 +1049,9 @@ static void > > _config_display_update(Evas_Object *win) > > { > > int flush_interval, font_c, image_c, edje_file_c, edje_col_c, > > ts_threshould, ts_hold_threshold; > > - double scale, s_bounce_friction, ts_momentum_threshold, ts_friction, > > - ts_border_friction, ts_sensitivity_friction, page_friction, > > bring_in_friction, zoom_friction; > > + double scale, s_bounce_friction, ts_momentum_threshold, ts_friction, > > ts_border_friction, > > + ts_sensitivity_friction, ts_acceleration_threshold, > > ts_acceleration_time_limit, > > + ts_acceleration_weight, page_friction, bring_in_friction, > > zoom_friction; > > const char *curr_theme, *curr_engine; > > const Eina_List *l_items, *l; > > Eina_Bool s_bounce, ts; > > @@ -1000,6 +1076,9 @@ _config_display_update(Evas_Object *win) > > ts_friction = elm_config_scroll_thumbscroll_friction_get(); > > ts_border_friction = > > elm_config_scroll_thumbscroll_border_friction_get(); > > ts_sensitivity_friction = > > elm_config_scroll_thumbscroll_sensitivity_friction_get(); > > + ts_acceleration_threshold = > > elm_config_scroll_thumbscroll_acceleration_threshold_get(); > > + ts_acceleration_time_limit = > > elm_config_scroll_thumbscroll_acceleration_time_limit_get(); > > + ts_acceleration_weight = > > elm_config_scroll_thumbscroll_acceleration_weight_get(); > > page_friction = elm_config_scroll_page_scroll_friction_get(); > > bring_in_friction = elm_config_scroll_bring_in_scroll_friction_get(); > > zoom_friction = elm_config_scroll_zoom_friction_get(); > > @@ -1042,6 +1121,12 @@ _config_display_update(Evas_Object *win) > > ts_border_friction); > > elm_slider_value_set(evas_object_data_get(win, > > "ts_sensitivity_friction_slider"), > > ts_sensitivity_friction); > > + elm_slider_value_set(evas_object_data_get(win, > > "ts_acceleration_threshold_slider"), > > + ts_acceleration_threshold); > > + elm_slider_value_set(evas_object_data_get(win, > > "ts_acceleration_time_limit_slider"), > > + ts_acceleration_time_limit); > > + elm_slider_value_set(evas_object_data_get(win, > > "ts_acceleration_weight_slider"), > > + ts_acceleration_weight); > > elm_slider_value_set(evas_object_data_get(win, > > > > "page_scroll_friction_slider"), > > page_friction); > > @@ -2751,6 +2836,64 @@ _status_config_scrolling(Evas_Object *win, > > evas_object_smart_callback_add(sl, "changed", tssf_round, NULL); > > evas_object_smart_callback_add(sl, "delay,changed", tssf_change, NULL); > > > > + LABEL_FRAME_ADD("<hilight>Thumb scroll acceleration threshold</>"); > > + > > + sl = elm_slider_add(win); > > + elm_object_tooltip_text_set(sl, "This is the minimum speed of mouse > > <br/>" > > + "cursor movement which will > > accelerate<br/>" > > + "scrolling velocity after a<br/>" > > + "mouse up event (pixels/second)"); > > + evas_object_data_set(win, "ts_acceleration_threshold_slider", sl); > > + evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0); > > + evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5); > > + elm_slider_span_size_set(sl, 120); > > + elm_slider_unit_format_set(sl, "%1.0f pixels/s"); > > + elm_slider_indicator_format_set(sl, "%1.0f"); > > + elm_slider_min_max_set(sl, 10.0, 5000.0); > > > > Well.. We can limit the maximum to less than 500. > > > > + elm_slider_value_set(sl, > > elm_config_scroll_thumbscroll_acceleration_threshold_get()); > > + elm_box_pack_end(bx, sl); > > + evas_object_show(sl); > > + > > + evas_object_smart_callback_add(sl, "changed", tsat_round, NULL); > > + evas_object_smart_callback_add(sl, "delay,changed", tsat_change, NULL); > > + > > + LABEL_FRAME_ADD("<hilight>Thumb scroll acceleration time limit</>"); > > + > > + sl = elm_slider_add(win); > > + elm_object_tooltip_text_set(sl, "This is the time limit for<br/>" > > + "accelerating velocity<br/>"); > > + evas_object_data_set(win, "ts_acceleration_time_limit_slider", sl); > > + evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0); > > + evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5); > > + elm_slider_span_size_set(sl, 120); > > + elm_slider_unit_format_set(sl, "%1.1f"); > > + elm_slider_indicator_format_set(sl, "%1.1f"); > > + elm_slider_min_max_set(sl, 0.0, 15.0); > > + elm_slider_value_set(sl, > > elm_config_scroll_thumbscroll_acceleration_time_limit_get()); > > + elm_box_pack_end(bx, sl); > > + evas_object_show(sl); > > + > > + evas_object_smart_callback_add(sl, "changed", tsatl_round, NULL); > > + evas_object_smart_callback_add(sl, "delay,changed", tsatl_change, > > NULL); > > + > > + LABEL_FRAME_ADD("<hilight>Thumb scroll acceleration weight</>"); > > + > > + sl = elm_slider_add(win); > > + elm_object_tooltip_text_set(sl, "This is the weight for acceleration"); > > + evas_object_data_set(win, "ts_acceleration_weight_slider", sl); > > + evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0); > > + evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5); > > + elm_slider_span_size_set(sl, 120); > > + elm_slider_unit_format_set(sl, "%1.1f"); > > + elm_slider_indicator_format_set(sl, "%1.1f"); > > + elm_slider_min_max_set(sl, 0.0, 10.0); > > + elm_slider_value_set(sl, > > elm_config_scroll_thumbscroll_acceleration_weight_get()); > > + elm_box_pack_end(bx, sl); > > + evas_object_show(sl); > > + > > + evas_object_smart_callback_add(sl, "changed", tsaw_round, NULL); > > + evas_object_smart_callback_add(sl, "delay,changed", tsaw_change, NULL); > > + > > sp = elm_separator_add(win); > > elm_separator_horizontal_set(sp, EINA_TRUE); > > evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0); > > diff --git a/src/lib/elm_config.c b/src/lib/elm_config.c > > index a6024d2..51ea0ee 100644 > > --- a/src/lib/elm_config.c > > +++ b/src/lib/elm_config.c > > @@ -357,6 +357,9 @@ _desc_init(void) > > ELM_CONFIG_VAL(D, T, thumbscroll_bounce_friction, T_DOUBLE); > > ELM_CONFIG_VAL(D, T, thumbscroll_border_friction, T_DOUBLE); > > ELM_CONFIG_VAL(D, T, thumbscroll_sensitivity_friction, T_DOUBLE); > > + ELM_CONFIG_VAL(D, T, thumbscroll_acceleration_threshold, T_DOUBLE); > > + ELM_CONFIG_VAL(D, T, thumbscroll_acceleration_time_limit, T_DOUBLE); > > + ELM_CONFIG_VAL(D, T, thumbscroll_acceleration_weight, T_DOUBLE); > > ELM_CONFIG_VAL(D, T, page_scroll_friction, T_DOUBLE); > > ELM_CONFIG_VAL(D, T, bring_in_scroll_friction, T_DOUBLE); > > ELM_CONFIG_VAL(D, T, zoom_friction, T_DOUBLE); > > @@ -1062,6 +1065,9 @@ _config_load(void) > > _elm_config->thumbscroll_friction = 1.0; > > _elm_config->thumbscroll_bounce_friction = 0.5; > > _elm_config->thumbscroll_bounce_enable = EINA_TRUE; > > + _elm_config->thumbscroll_acceleration_threshold = 500.0; > > + _elm_config->thumbscroll_acceleration_time_limit = 0.7; > > + _elm_config->thumbscroll_acceleration_weight = 1.5; > > _elm_config->page_scroll_friction = 0.5; > > _elm_config->bring_in_scroll_friction = 0.5; > > _elm_config->zoom_friction = 0.5; > > @@ -1479,6 +1485,12 @@ _env_get(void) > > if (s) _elm_config->thumbscroll_bounce_enable = !!atoi(s); > > s = getenv("ELM_THUMBSCROLL_BOUNCE_FRICTION"); > > if (s) _elm_config->thumbscroll_bounce_friction = _elm_atof(s); > > + s = getenv("ELM_THUMBSCROLL_ACCELERATION_THRESHOLD"); > > + if (s) _elm_config->thumbscroll_acceleration_threshold = _elm_atof(s); > > + s = getenv("ELM_THUMBSCROLL_ACCELERATION_TIME_LIMIT"); > > + if (s) _elm_config->thumbscroll_acceleration_time_limit = _elm_atof(s); > > + s = getenv("ELM_THUMBSCROLL_ACCELERATION_WEIGHT"); > > + if (s) _elm_config->thumbscroll_acceleration_weight = _elm_atof(s); > > s = getenv("ELM_PAGE_SCROLL_FRICTION"); > > if (s) _elm_config->page_scroll_friction = _elm_atof(s); > > s = getenv("ELM_BRING_IN_SCROLL_FRICTION"); > > @@ -2169,6 +2181,42 @@ > > elm_config_scroll_thumbscroll_sensitivity_friction_set(double friction) > > _elm_config->thumbscroll_sensitivity_friction = friction; > > } > > > > +EAPI double > > +elm_config_scroll_thumbscroll_acceleration_threshold_get(void) > > +{ > > + return _elm_config->thumbscroll_acceleration_threshold; > > +} > > + > > +EAPI void > > +elm_config_scroll_thumbscroll_acceleration_threshold_set(double threshold) > > +{ > > + _elm_config->thumbscroll_acceleration_threshold = threshold; > > +} > > + > > +EAPI double > > +elm_config_scroll_thumbscroll_acceleration_time_limit_get(void) > > +{ > > + return _elm_config->thumbscroll_acceleration_time_limit; > > +} > > + > > +EAPI void > > +elm_config_scroll_thumbscroll_acceleration_time_limit_set(double > > time_limit) > > +{ > > + _elm_config->thumbscroll_acceleration_time_limit = time_limit; > > +} > > + > > +EAPI double > > +elm_config_scroll_thumbscroll_acceleration_weight_get(void) > > +{ > > + return _elm_config->thumbscroll_acceleration_weight; > > +} > > + > > +EAPI void > > +elm_config_scroll_thumbscroll_acceleration_weight_set(double weight) > > +{ > > + _elm_config->thumbscroll_acceleration_weight = weight; > > +} > > + > > EAPI void > > elm_config_longpress_timeout_set(double longpress_timeout) > > { > > diff --git a/src/lib/elm_config.h b/src/lib/elm_config.h > > index 4b3b6a6..8f72281 100644 > > --- a/src/lib/elm_config.h > > +++ b/src/lib/elm_config.h > > @@ -423,6 +423,67 @@ EAPI double > > elm_config_scroll_thumbscroll_sensitivity_friction_get(void); > > EAPI void > > elm_config_scroll_thumbscroll_sensitivity_friction_set(double friction); > > > > /** > > + * Get the minimum speed of mouse cursor movement which will accelerate > > + * scrolling velocity after a mouse up event > > + * (pixels/second). > > + * > > + * @return the thumb scroll acceleration threshold > > + * > > + * @ingroup Scrolling > > + */ > > +EAPI double > > elm_config_scroll_thumbscroll_acceleration_threshold_get(void); > > + > > +/** > > + * Set the minimum speed of mouse cursor movement which will accelerate > > + * scrolling velocity after a mouse up event > > + * (pixels/second). > > + * > > + * @param threshold the thumb scroll acceleration threshold > > + * > > + * @see elm_config_thumbscroll_acceleration_threshold_get() > > + * @ingroup Scrolling > > + */ > > +EAPI void > > elm_config_scroll_thumbscroll_acceleration_threshold_set(double threshold); > > + > > +/** > > + * Get the time limit for accelerating velocity. > > + * > > + * @return the thumb scroll acceleration time limit > > + * > > + * @ingroup Scrolling > > + */ > > +EAPI double > > elm_config_scroll_thumbscroll_acceleration_time_limit_get(void); > > + > > +/** > > + * Set the time limit for accelerating velocity. > > + * > > + * @param threshold the thumb scroll acceleration time limit > > + * > > + * @see elm_config_thumbscroll_acceleration_time_limit_get() > > + * @ingroup Scrolling > > + */ > > +EAPI void > > elm_config_scroll_thumbscroll_acceleration_time_limit_set(double > > time_limit); > > + > > +/** > > + * Get the weight for the acceleration. > > + * > > + * @return the thumb scroll acceleration weight > > + * > > + * @ingroup Scrolling > > + */ > > +EAPI double > > elm_config_scroll_thumbscroll_acceleration_weight_get(void); > > + > > +/** > > + * Set the weight for the acceleration. > > + * > > + * @param threshold the thumb scroll acceleration weight > > + * > > + * @see elm_config_thumbscroll_acceleration_weight_get() > > + * @ingroup Scrolling > > + */ > > +EAPI void > > elm_config_scroll_thumbscroll_acceleration_weight_set(double weight); > > + > > +/** > > * @} > > */ > > > > diff --git a/src/lib/elm_interface_scrollable.c > > b/src/lib/elm_interface_scrollable.c > > index 40c2028..7883027 100644 > > --- a/src/lib/elm_interface_scrollable.c > > +++ b/src/lib/elm_interface_scrollable.c > > @@ -2390,18 +2390,20 @@ _elm_scroll_mouse_up_event_cb(void *data, > > else > > sid->down.extra_time = 0.0; > > > > - if (abs(sid->down.dx) > 500 && (dtt < 0.7) && > > + if (abs(sid->down.dx) > > > _elm_config->thumbscroll_acceleration_threshold && > > + (dtt < > > _elm_config->thumbscroll_acceleration_time_limit) && > > (((sid->down.dx > 0) && (sid->down.pdx > > > 0)) || > > ((sid->down.dx < 0) && (sid->down.pdx < > > 0)))) > > if (px > minx && px < mx) > > - sid->down.dx += (double)sid->down.pdx * > > 1.5; > > - // FIXME: > 500, < 0.7, * 1.5 - probably > > should be config > > - if (abs(sid->down.dy) > 500 && (dtt < 0.7) && > > + sid->down.dx += (double)sid->down.pdx * > > _elm_config->thumbscroll_acceleration_weight; > > + if (abs(sid->down.dy) > > > _elm_config->thumbscroll_acceleration_threshold && > > + (dtt < > > _elm_config->thumbscroll_acceleration_time_limit) && > > (((sid->down.dy > 0) && (sid->down.pdy > > > 0)) || > > ((sid->down.dy < 0) && (sid->down.pdy < > > 0)))) > > if (py > miny && py < my) > > - sid->down.dy += (double)sid->down.pdy * > > 1.5; > > - // FIXME: > 500, < 0.7, * 1.5 - probably > > should be config > > + { > > + sid->down.dy += (double)sid->down.pdy * > > _elm_config->thumbscroll_acceleration_weight; > > + } > > sid->down.pdx = sid->down.dx; > > sid->down.pdy = sid->down.dy; > > ox = -sid->down.dx; > > diff --git a/src/lib/elm_priv.h b/src/lib/elm_priv.h > > index 73d9ca0..dd4481a 100644 > > --- a/src/lib/elm_priv.h > > +++ b/src/lib/elm_priv.h > > @@ -163,6 +163,9 @@ struct _Elm_Config > > double thumbscroll_momentum_threshold; > > double thumbscroll_friction; > > double thumbscroll_bounce_friction; > > + double thumbscroll_acceleration_threshold; > > + double thumbscroll_acceleration_time_limit; > > + double thumbscroll_acceleration_weight; > > double page_scroll_friction; > > double bring_in_scroll_friction; > > double zoom_friction; > > > > -- > > > > Thanks. > > Daniel Juyung Seo (SeoZ) > > > > > > > > ------------------------------------------------------------------------------ > > Precog is a next-generation analytics platform capable of advanced > > analytics on semi-structured data. The platform includes APIs for building > > apps and a phenomenal toolset for data science. Developers can use > > our toolset for easy data analysis & visualization. Get a free account! > > http://www2.precog.com/precogplatform/slashdotnewsletter > > > ------------------------------------------------------------------------------ > Precog is a next-generation analytics platform capable of advanced > analytics on semi-structured data. The platform includes APIs for building > apps and a phenomenal toolset for data science. Developers can use > our toolset for easy data analysis & visualization. Get a free account! > http://www2.precog.com/precogplatform/slashdotnewsletter > _______________________________________________ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) ras...@rasterman.com ------------------------------------------------------------------------------ Precog is a next-generation analytics platform capable of advanced analytics on semi-structured data. The platform includes APIs for building apps and a phenomenal toolset for data science. Developers can use our toolset for easy data analysis & visualization. Get a free account! http://www2.precog.com/precogplatform/slashdotnewsletter _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel