New Elementary Config. App. options tab: Scrolling.

Also introducing config. API to set/query those values.



SVN revision: 55328
This commit is contained in:
Gustavo Lima Chaves 2010-12-06 12:46:10 +00:00
parent b63bf2450e
commit e2b7c27106
4 changed files with 1324 additions and 205 deletions

View File

@ -67,6 +67,25 @@ struct _Fonts_Data
} \
while (0)
#define LABEL_FRAME_ADD(label) \
do \
{ \
pd = elm_frame_add(win); \
evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, 0.0); \
evas_object_size_hint_align_set(pd, EVAS_HINT_FILL, 0.5); \
elm_object_style_set(pd, "pad_medium"); \
elm_box_pack_end(bx, pd); \
evas_object_show(pd); \
\
lb = elm_label_add(win); \
evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0); \
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.5); \
elm_label_label_set(lb, label); \
elm_frame_content_set(pd, lb); \
evas_object_show(lb); \
} \
while (0)
static int quiet = 0;
static int interactive = 1;
@ -118,6 +137,226 @@ config_exit(void *data __UNUSED__,
elm_exit(); /* exit the program's main loop that runs in elm_run() */
}
static void
sb_change(void *data __UNUSED__,
Evas_Object *obj,
void *event_info __UNUSED__)
{
Eina_Bool val = elm_check_state_get(obj);
Eina_Bool sb = elm_scroll_bounce_enabled_get();
if (val == sb) return;
elm_scroll_bounce_enabled_all_set(val);
/*TODO: enable/disable subordinate sliders (make 'em support it 1st)*/
}
static void
bf_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
bf_change(void *data __UNUSED__,
Evas_Object *obj,
void *event_info __UNUSED__)
{
double bf = elm_scroll_bounce_friction_get();
double val = elm_slider_value_get(obj);
if (bf == val) return;
elm_scroll_bounce_friction_all_set(val);
}
static void
ps_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
ps_change(void *data __UNUSED__,
Evas_Object *obj,
void *event_info __UNUSED__)
{
double ps = elm_scroll_page_scroll_friction_get();
double val = elm_slider_value_get(obj);
if (ps == val) return;
elm_scroll_page_scroll_friction_all_set(val);
}
static void
bis_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
bis_change(void *data __UNUSED__,
Evas_Object *obj,
void *event_info __UNUSED__)
{
double bis = elm_scroll_bring_in_scroll_friction_get();
double val = elm_slider_value_get(obj);
if (bis == val) return;
elm_scroll_bring_in_scroll_friction_all_set(val);
}
static void
zf_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
zf_change(void *data __UNUSED__,
Evas_Object *obj,
void *event_info __UNUSED__)
{
double zf = elm_scroll_zoom_friction_get();
double val = elm_slider_value_get(obj);
if (zf == val) return;
elm_scroll_zoom_friction_all_set(val);
}
static void
ts_change(void *data __UNUSED__,
Evas_Object *obj,
void *event_info __UNUSED__)
{
Eina_Bool val = elm_check_state_get(obj);
Eina_Bool sb = elm_scroll_bounce_enabled_get();
if (val == sb) return;
elm_scroll_thumbscroll_enabled_all_set(val);
/*TODO: enable/disable subordinate sliders (make 'em support it 1st)*/
}
static void
tst_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
tst_change(void *data __UNUSED__,
Evas_Object *obj,
void *event_info __UNUSED__)
{
double tst = elm_scroll_thumbscroll_threshold_get();
double val = elm_slider_value_get(obj);
if (tst == val) return;
elm_scroll_thumbscroll_threshold_all_set(val);
}
static void
tsmt_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
tsmt_change(void *data __UNUSED__,
Evas_Object *obj,
void *event_info __UNUSED__)
{
double tsmt = elm_scroll_thumbscroll_momentum_threshold_get();
double val = elm_slider_value_get(obj);
if (tsmt == val) return;
elm_scroll_thumbscroll_momentum_threshold_all_set(val);
}
static void
tsf_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
tsf_change(void *data __UNUSED__,
Evas_Object *obj,
void *event_info __UNUSED__)
{
double tsf = elm_scroll_thumbscroll_friction_get();
double val = elm_slider_value_get(obj);
if (tsf == val) return;
elm_scroll_thumbscroll_friction_all_set(val);
}
static void
tsbf_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
tsbf_change(void *data __UNUSED__,
Evas_Object *obj,
void *event_info __UNUSED__)
{
double tsbf = elm_scroll_thumbscroll_border_friction_get();
double val = elm_slider_value_get(obj);
if (tsbf == val) return;
elm_scroll_thumbscroll_border_friction_all_set(val);
}
static void
cf_round(void *data __UNUSED__,
Evas_Object *obj,
@ -310,42 +549,30 @@ static void
_status_config(Evas_Object *win,
Evas_Object *bx0)
{
Evas_Object *lb, *pd, *bx2, *fr, *sl, *sp;
Evas_Object *lb, *pd, *bx, *fr, *sl, *sp;
fr = elm_frame_add(win);
evas_object_size_hint_weight_set(fr, 1.0, 1.0);
evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_frame_label_set(fr, "Sizing");
elm_box_pack_end(bx0, fr);
evas_object_show(fr);
bx2 = elm_box_add(win);
evas_object_size_hint_weight_set(bx2, 1.0, 0.0);
evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, 0.5);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0.5);
pd = elm_frame_add(win);
evas_object_size_hint_weight_set(pd, 1.0, 0.0);
evas_object_size_hint_align_set(pd, EVAS_HINT_FILL, 0.5);
elm_object_style_set(pd, "pad_medium");
elm_box_pack_end(bx2, pd);
evas_object_show(pd);
lb = elm_label_add(win);
evas_object_size_hint_weight_set(lb, 1.0, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.5);
elm_label_label_set(lb, "<hilight>Scale</>");
elm_frame_content_set(pd, lb);
evas_object_show(lb);
LABEL_FRAME_ADD("<hilight>Scale</>");
sl = elm_slider_add(win);
evas_object_size_hint_weight_set(sl, 1.0, 0.0);
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.2f");
elm_slider_indicator_format_set(sl, "%1.2f");
elm_slider_min_max_set(sl, 0.25, 5.0);
elm_slider_value_set(sl, elm_scale_get());
elm_box_pack_end(bx2, sl);
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_smart_callback_add(sl, "changed", sc_round, NULL);
@ -353,34 +580,22 @@ _status_config(Evas_Object *win,
sp = elm_separator_add(win);
elm_separator_horizontal_set(sp, 1);
evas_object_size_hint_weight_set(sp, 1.0, 0.0);
evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx2, sp);
elm_box_pack_end(bx, sp);
evas_object_show(sp);
pd = elm_frame_add(win);
evas_object_size_hint_weight_set(pd, 1.0, 0.0);
evas_object_size_hint_align_set(pd, EVAS_HINT_FILL, 0.5);
elm_object_style_set(pd, "pad_medium");
elm_box_pack_end(bx2, pd);
evas_object_show(pd);
lb = elm_label_add(win);
evas_object_size_hint_weight_set(lb, 1.0, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.5);
elm_label_label_set(lb, "<hilight>Finger Size</><br>");
elm_frame_content_set(pd, lb);
evas_object_show(lb);
LABEL_FRAME_ADD("<hilight>Finger Size</><br>");
sl = elm_slider_add(win);
evas_object_size_hint_weight_set(sl, 1.0, 0.0);
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");
elm_slider_indicator_format_set(sl, "%1.0f");
elm_slider_min_max_set(sl, 5, 200);
elm_slider_value_set(sl, elm_finger_size_get());
elm_box_pack_end(bx2, sl);
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_smart_callback_add(sl, "changed", fs_round, NULL);
@ -389,8 +604,8 @@ _status_config(Evas_Object *win,
// FIXME: add theme selector (basic mode and advanced for fallbacks)
// FIXME: save config
// FIXME: profile selector / creator etc.
elm_frame_content_set(fr, bx2);
evas_object_show(bx2);
elm_frame_content_set(fr, bx);
evas_object_show(bx);
}
static void
@ -630,12 +845,14 @@ static void
_profile_change_do(Evas_Object *win,
const char *profile)
{
int flush_interval, font_c, image_c, edje_file_c, edje_col_c;
int flush_interval, font_c, image_c, edje_file_c, edje_col_c, ts_threshould;
double scale, s_bounce_friction, ts_momentum_threshold, ts_friction,
ts_border_friction, page_friction, bring_in_friction, zoom_friction;
const char *curr_theme, *curr_engine;
const Eina_List *l_items, *l;
Eina_Bool s_bounce, ts;
Elm_List_Item *it;
Elm_Theme *th;
double scale;
int fs;
elm_profile_all_set(profile);
@ -648,6 +865,17 @@ _profile_change_do(Evas_Object *win,
edje_file_c = elm_edje_file_cache_get();
edje_col_c = elm_edje_collection_cache_get();
s_bounce = elm_scroll_bounce_enabled_get();
s_bounce_friction = elm_scroll_bounce_friction_get();
ts = elm_scroll_thumbscroll_enabled_get();
ts_threshould = elm_scroll_thumbscroll_threshold_get();
ts_momentum_threshold = elm_scroll_thumbscroll_momentum_threshold_get();
ts_friction = elm_scroll_thumbscroll_friction_get();
ts_border_friction = elm_scroll_thumbscroll_border_friction_get();
page_friction = elm_scroll_page_scroll_friction_get();
bring_in_friction = elm_scroll_bring_in_scroll_friction_get();
zoom_friction = elm_scroll_zoom_friction_get();
/* gotta update root windows' atoms */
elm_scale_all_set(scale);
elm_slider_value_set(evas_object_data_get(win, "scale_slider"), scale);
@ -672,6 +900,42 @@ _profile_change_do(Evas_Object *win,
"edje_collection_cache_slider"),
edje_col_c);
elm_scroll_bounce_enabled_all_set(s_bounce);
elm_check_state_set(evas_object_data_get(win, "scroll_bounce_check"),
s_bounce);
elm_scroll_bounce_friction_all_set(s_bounce_friction);
elm_slider_value_set(evas_object_data_get(win, "bounce_friction_slider"),
s_bounce_friction);
elm_scroll_thumbscroll_enabled_all_set(ts);
elm_check_state_set(evas_object_data_get(win, "thumbscroll_check"), ts);
elm_scroll_thumbscroll_threshold_all_set(ts_threshould);
elm_slider_value_set(evas_object_data_get(win,
"thumbscroll_threshold_slider"),
ts_threshould);
elm_scroll_thumbscroll_momentum_threshold_all_set(ts_momentum_threshold);
elm_slider_value_set(evas_object_data_get(win,
"ts_momentum_threshold_slider"),
ts_momentum_threshold);
elm_scroll_thumbscroll_friction_all_set(ts_friction);
elm_slider_value_set(evas_object_data_get(win,
"thumbscroll_friction_slider"),
ts_friction);
elm_scroll_thumbscroll_border_friction_all_set(ts_border_friction);
elm_slider_value_set(evas_object_data_get(win, "ts_border_friction_slider"),
ts_border_friction);
elm_scroll_page_scroll_friction_all_set(page_friction);
elm_slider_value_set(evas_object_data_get(win,
"page_scroll_friction_slider"),
page_friction);
elm_scroll_bring_in_scroll_friction_all_set(bring_in_friction);
elm_slider_value_set(evas_object_data_get(win,
"bring_in_scroll_friction_slider"),
bring_in_friction);
elm_scroll_zoom_friction_all_set(zoom_friction);
elm_slider_value_set(evas_object_data_get(win,
"zoom_scroll_friction_slider"),
zoom_friction);
curr_theme = _elm_theme_current_get(elm_theme_get(NULL));
elm_theme_all_set(curr_theme);
@ -858,19 +1122,7 @@ _status_config_sizing(Evas_Object *win,
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0.5);
pd = elm_frame_add(win);
evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(pd, EVAS_HINT_FILL, 0.5);
elm_object_style_set(pd, "pad_medium");
elm_box_pack_end(bx, pd);
evas_object_show(pd);
lb = elm_label_add(win);
evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.5);
elm_label_label_set(lb, "<hilight>Scale</>");
elm_frame_content_set(pd, lb);
evas_object_show(lb);
LABEL_FRAME_ADD("<hilight>Scale</>");
sl = elm_slider_add(win);
evas_object_data_set(win, "scale_slider", sl);
@ -894,19 +1146,7 @@ _status_config_sizing(Evas_Object *win,
elm_box_pack_end(bx, sp);
evas_object_show(sp);
pd = elm_frame_add(win);
evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(pd, EVAS_HINT_FILL, 0.5);
elm_object_style_set(pd, "pad_medium");
elm_box_pack_end(bx, pd);
evas_object_show(pd);
lb = elm_label_add(win);
evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.5);
elm_label_label_set(lb, "<hilight>Finger Size</><br>");
elm_frame_content_set(pd, lb);
evas_object_show(lb);
LABEL_FRAME_ADD("<hilight>Finger Size</><br>");
sl = elm_slider_add(win);
evas_object_data_set(win, "fs_slider", sl);
@ -1159,35 +1399,6 @@ _status_config_themes(Evas_Object *win,
elm_pager_content_push(pager, tb);
}
static void
_unimplemented(Evas_Object *win,
Evas_Object *pager,
const char *name)
{
Evas_Object *lb, *pd, *bx2;
bx2 = elm_box_add(win);
evas_object_size_hint_weight_set(bx2, 1.0, 0.0);
evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, 0.5);
pd = elm_frame_add(win);
evas_object_size_hint_weight_set(pd, 0.0, 0.0);
evas_object_size_hint_align_set(pd, 0.5, 0.5);
elm_object_style_set(pd, "pad_medium");
elm_box_pack_end(bx2, pd);
evas_object_show(pd);
lb = elm_label_add(win);
evas_object_size_hint_weight_set(lb, 0.0, 0.0);
evas_object_size_hint_align_set(lb, 0.5, 0.5);
elm_label_label_set(lb, "<hilight>Not implemented yet</>");
elm_frame_content_set(pd, lb);
evas_object_show(lb);
evas_object_data_set(win, name, bx2);
elm_pager_content_push(pager, bx2);
}
static void
_font_preview_update(Evas_Object *win)
{
@ -2114,7 +2325,225 @@ static void
_status_config_scrolling(Evas_Object *win,
Evas_Object *pager)
{
_unimplemented(win, pager, "scrolling");
Evas_Object *lb, *pd, *bx, *sl, *sp, *ck, *sc;
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0.5);
sc = elm_scroller_add(win);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_scroller_bounce_set(sc, EINA_FALSE, EINA_TRUE);
evas_object_show(sc);
elm_scroller_content_set(sc, bx);
ck = elm_check_add(win);
elm_object_tooltip_text_set(ck, "Set whether scrollers should bounce<br>"
"when they reach their viewport's edge<br>"
"during a scroll");
elm_check_label_set(ck, "Enable scroll bounce");
evas_object_data_set(win, "scroll_bounce_check", ck);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(ck, EVAS_HINT_FILL, 0.5);
elm_check_state_set(ck, elm_scroll_bounce_enabled_get());
elm_box_pack_end(bx, ck);
evas_object_show(ck);
evas_object_smart_callback_add(ck, "changed", sb_change, NULL);
LABEL_FRAME_ADD("<hilight>Scroll bounce friction</>");
sl = elm_slider_add(win);
elm_object_tooltip_text_set(sl, "This is the amount of inertia a <br>"
"scroller will impose at bounce animations");
evas_object_data_set(win, "bounce_friction_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.2f");
elm_slider_indicator_format_set(sl, "%1.2f");
elm_slider_min_max_set(sl, 0.0, 4.0);
elm_slider_value_set(sl, elm_scroll_bounce_friction_get());
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_smart_callback_add(sl, "changed", bf_round, NULL);
evas_object_smart_callback_add(sl, "delay,changed", bf_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);
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, sp);
evas_object_show(sp);
ck = elm_check_add(win);
elm_object_tooltip_text_set(ck, "Set whether scrollers should be<br>"
"draggable from any point in their views");
elm_check_label_set(ck, "Enable thumb scroll");
evas_object_data_set(win, "thumbscroll_check", ck);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(ck, EVAS_HINT_FILL, 0.5);
elm_check_state_set(ck, elm_scroll_thumbscroll_enabled_get());
elm_box_pack_end(bx, ck);
evas_object_show(ck);
evas_object_smart_callback_add(ck, "changed", ts_change, NULL);
LABEL_FRAME_ADD("<hilight>Thumb scroll threshold</>");
sl = elm_slider_add(win);
elm_object_tooltip_text_set(sl, "This is the number of pixels one should<br>"
"travel while dragging a scroller's view to<br>"
"actually trigger scrolling");
evas_object_data_set(win, "thumbscroll_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");
elm_slider_indicator_format_set(sl, "%1.0f");
elm_slider_min_max_set(sl, 8.0, 50.0);
elm_slider_value_set(sl, elm_scroll_thumbscroll_threshold_get());
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_smart_callback_add(sl, "changed", tst_round, NULL);
evas_object_smart_callback_add(sl, "delay,changed", tst_change, NULL);
LABEL_FRAME_ADD("<hilight>Thumb scroll momentum threshold</>");
sl = elm_slider_add(win);
elm_object_tooltip_text_set(sl, "This is the minimum speed of mouse <br>"
"cursor movement which will trigger<br>"
"list self scrolling animation after a<br>"
"mouse up event (pixels/second)");
evas_object_data_set(win, "ts_momentum_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, 200.0);
elm_slider_value_set(sl, elm_scroll_thumbscroll_momentum_threshold_get());
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_smart_callback_add(sl, "changed", tsmt_round, NULL);
evas_object_smart_callback_add(sl, "delay,changed", tsmt_change,
NULL);
LABEL_FRAME_ADD("<hilight>Thumb scroll friction</>");
sl = elm_slider_add(win);
elm_object_tooltip_text_set(sl, "This is the amount of inertia a<br>"
"scroller will impose at self scrolling<br>"
"animations");
evas_object_data_set(win, "thumbscroll_friction_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_scroll_thumbscroll_friction_get());
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_smart_callback_add(sl, "changed", tsf_round, NULL);
evas_object_smart_callback_add(sl, "delay,changed", tsf_change, NULL);
LABEL_FRAME_ADD("<hilight>Thumb scroll border friction</>");
sl = elm_slider_add(win);
elm_object_tooltip_text_set(sl, "This is the amount of lag between your<br>"
"actual mouse cursor dragging movement and<br>"
"a scroller's view movement itself, while<br>"
"pushing it into bounce state manually");
evas_object_data_set(win, "ts_border_friction_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.2f");
elm_slider_indicator_format_set(sl, "%1.2f");
elm_slider_min_max_set(sl, 0.0, 1.0);
elm_slider_value_set(sl, elm_scroll_thumbscroll_border_friction_get());
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_smart_callback_add(sl, "changed", tsbf_round, NULL);
evas_object_smart_callback_add(sl, "delay,changed", tsbf_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);
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, sp);
evas_object_show(sp);
LABEL_FRAME_ADD("<hilight>Page scroll friction</>");
sl = elm_slider_add(win);
elm_object_tooltip_text_set(sl, "This is the amount of inertia a<br>"
"paged scroller will impose at<br>"
"page fitting animations");
evas_object_data_set(win, "page_scroll_friction_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, 5.0);
elm_slider_value_set(sl, elm_scroll_page_scroll_friction_get());
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_smart_callback_add(sl, "changed", ps_round, NULL);
evas_object_smart_callback_add(sl, "delay,changed", ps_change, NULL);
LABEL_FRAME_ADD("<hilight>Bring in scroll friction</>");
sl = elm_slider_add(win);
elm_object_tooltip_text_set(sl, "This is the amount of inertia a<br>"
"scroller will impose at region bring<br>"
"animations");
evas_object_data_set(win, "bring_in_scroll_friction_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, 5.0);
elm_slider_value_set(sl, elm_scroll_bring_in_scroll_friction_get());
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_smart_callback_add(sl, "changed", bis_round, NULL);
evas_object_smart_callback_add(sl, "delay,changed", bis_change, NULL);
LABEL_FRAME_ADD("<hilight>Zoom scroll friction</>");
sl = elm_slider_add(win);
elm_object_tooltip_text_set(sl, "This is the amount of inertia inertia<br>"
"scrollers will impose at animations<br>"
"triggered by Elementary widgets' zooming API");
evas_object_data_set(win, "zoom_scroll_friction_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, 5.0);
elm_slider_value_set(sl, elm_scroll_zoom_friction_get());
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_smart_callback_add(sl, "changed", zf_round, NULL);
evas_object_smart_callback_add(sl, "delay,changed", zf_change, NULL);
evas_object_data_set(win, "scrolling", sc);
elm_pager_content_push(pager, sc);
}
static char *
@ -2270,19 +2699,7 @@ _status_config_caches(Evas_Object *win,
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0.5);
pd = elm_frame_add(win);
evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(pd, EVAS_HINT_FILL, 0.5);
elm_object_style_set(pd, "pad_medium");
elm_box_pack_end(bx, pd);
evas_object_show(pd);
lb = elm_label_add(win);
evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.5);
elm_label_label_set(lb, "<hilight>Cache Flush Interval</>");
elm_frame_content_set(pd, lb);
evas_object_show(lb);
LABEL_FRAME_ADD("<hilight>Cache Flush Interval</>");
sl = elm_slider_add(win);
evas_object_data_set(win, "cache_flush_interval_slider", sl);
@ -2306,19 +2723,7 @@ _status_config_caches(Evas_Object *win,
elm_box_pack_end(bx, sp);
evas_object_show(sp);
pd = elm_frame_add(win);
evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(pd, EVAS_HINT_FILL, 0.5);
elm_object_style_set(pd, "pad_medium");
elm_box_pack_end(bx, pd);
evas_object_show(pd);
lb = elm_label_add(win);
evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.5);
elm_label_label_set(lb, "<hilight>Font Cache Size</>");
elm_frame_content_set(pd, lb);
evas_object_show(lb);
LABEL_FRAME_ADD("<hilight>Font Cache Size</>");
sl = elm_slider_add(win);
evas_object_data_set(win, "font_cache_slider", sl);
@ -2342,19 +2747,7 @@ _status_config_caches(Evas_Object *win,
elm_box_pack_end(bx, sp);
evas_object_show(sp);
pd = elm_frame_add(win);
evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(pd, EVAS_HINT_FILL, 0.5);
elm_object_style_set(pd, "pad_medium");
elm_box_pack_end(bx, pd);
evas_object_show(pd);
lb = elm_label_add(win);
evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.5);
elm_label_label_set(lb, "<hilight>Image Cache Size</><br>");
elm_frame_content_set(pd, lb);
evas_object_show(lb);
LABEL_FRAME_ADD("<hilight>Image Cache Size</>");
sl = elm_slider_add(win);
evas_object_data_set(win, "image_cache_slider", sl);
@ -2378,19 +2771,7 @@ _status_config_caches(Evas_Object *win,
elm_box_pack_end(bx, sp);
evas_object_show(sp);
pd = elm_frame_add(win);
evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(pd, EVAS_HINT_FILL, 0.5);
elm_object_style_set(pd, "pad_medium");
elm_box_pack_end(bx, pd);
evas_object_show(pd);
lb = elm_label_add(win);
evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.5);
elm_label_label_set(lb, "<hilight>Number of Edje Files to Cache</>");
elm_frame_content_set(pd, lb);
evas_object_show(lb);
LABEL_FRAME_ADD("<hilight>Number of Edje Files to Cache</>");
sl = elm_slider_add(win);
evas_object_data_set(win, "edje_file_cache_slider", sl);
@ -2414,19 +2795,7 @@ _status_config_caches(Evas_Object *win,
elm_box_pack_end(bx, sp);
evas_object_show(sp);
pd = elm_frame_add(win);
evas_object_size_hint_weight_set(pd, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(pd, EVAS_HINT_FILL, 0.5);
elm_object_style_set(pd, "pad_medium");
elm_box_pack_end(bx, pd);
evas_object_show(pd);
lb = elm_label_add(win);
evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.5);
elm_label_label_set(lb, "<hilight>Number of Edje Collections to Cache</>");
elm_frame_content_set(pd, lb);
evas_object_show(lb);
LABEL_FRAME_ADD("<hilight>Number of Edje Collections to Cache</>");
sl = elm_slider_add(win);
evas_object_data_set(win, "edje_collection_cache_slider", sl);

View File

@ -356,6 +356,37 @@ extern "C" {
EAPI void elm_object_focus_cycle(Evas_Object *obj, Elm_Focus_Direction dir) EINA_ARG_NONNULL(1);
EAPI void elm_object_focus_direction_go(Evas_Object *obj, int x, int y) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_scroll_bounce_enabled_get(void);
EAPI void elm_scroll_bounce_enabled_set(Eina_Bool enabled);
EAPI void elm_scroll_bounce_enabled_all_set(Eina_Bool enabled);
EAPI double elm_scroll_bounce_friction_get(void);
EAPI void elm_scroll_bounce_friction_set(double friction);
EAPI void elm_scroll_bounce_friction_all_set(double friction);
EAPI double elm_scroll_page_scroll_friction_get(void);
EAPI void elm_scroll_page_scroll_friction_set(double friction);
EAPI void elm_scroll_page_scroll_friction_all_set(double friction);
EAPI double elm_scroll_bring_in_scroll_friction_get(void);
EAPI void elm_scroll_bring_in_scroll_friction_set(double friction);
EAPI void elm_scroll_bring_in_scroll_friction_all_set(double friction);
EAPI double elm_scroll_zoom_friction_get(void);
EAPI void elm_scroll_zoom_friction_set(double friction);
EAPI void elm_scroll_zoom_friction_all_set(double friction);
EAPI Eina_Bool elm_scroll_thumbscroll_enabled_get(void);
EAPI void elm_scroll_thumbscroll_enabled_set(Eina_Bool enabled);
EAPI void elm_scroll_thumbscroll_enabled_all_set(Eina_Bool enabled);
EAPI unsigned int elm_scroll_thumbscroll_threshold_get(void);
EAPI void elm_scroll_thumbscroll_threshold_set(unsigned int threshold);
EAPI void elm_scroll_thumbscroll_threshold_all_set(unsigned int threshold);
EAPI double elm_scroll_thumbscroll_momentum_threshold_get(void);
EAPI void elm_scroll_thumbscroll_momentum_threshold_set(double threshold);
EAPI void elm_scroll_thumbscroll_momentum_threshold_all_set(double threshold);
EAPI double elm_scroll_thumbscroll_friction_get(void);
EAPI void elm_scroll_thumbscroll_friction_set(double friction);
EAPI void elm_scroll_thumbscroll_friction_all_set(double friction);
EAPI double elm_scroll_thumbscroll_border_friction_get(void);
EAPI void elm_scroll_thumbscroll_border_friction_set(double friction);
EAPI void elm_scroll_thumbscroll_border_friction_all_set(double friction);
EAPI void elm_object_scroll_hold_push(Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_object_scroll_hold_pop(Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_object_scroll_freeze_push(Evas_Object *obj) EINA_ARG_NONNULL(1);
@ -530,7 +561,7 @@ extern "C" {
* "focus,out" - window lost focus
* "moved" - window that holds the canvas was moved
*/
/* bg */
typedef enum _Elm_Bg_Option
{
@ -539,7 +570,7 @@ extern "C" {
ELM_BG_OPTION_STRETCH, /**< stretch the background to fill */
ELM_BG_OPTION_TILE /**< tile background at its original size */
} Elm_Bg_Option;
EAPI Evas_Object *elm_bg_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
EAPI void elm_bg_file_set(Evas_Object *obj, const char *file, const char *group) EINA_ARG_NONNULL(1);
EAPI void elm_bg_file_get(const Evas_Object *obj, const char **file, const char **group) EINA_ARG_NONNULL(1);
@ -1132,7 +1163,7 @@ extern "C" {
ELM_ICON_STANDARD
} Elm_Icon_Type;
typedef struct _Elm_Hoversel_Item Elm_Hoversel_Item; /**< Item of Elm_Hoversel. Sub-type of Elm_Widget_Item */
EAPI Evas_Object *elm_entry_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
EAPI void elm_entry_single_line_set(Evas_Object *obj, Eina_Bool single_line) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_entry_single_line_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
@ -1343,7 +1374,7 @@ extern "C" {
* "generate,error" - the thumbnail generation failed
* "load,error" - the thumbnail image loading failed
*/
/* hoversel */
EAPI Evas_Object *elm_hoversel_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
EAPI void elm_hoversel_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) EINA_ARG_NONNULL(1);
@ -1384,7 +1415,7 @@ extern "C" {
typedef struct _Elm_Toolbar_Item Elm_Toolbar_Item; /**< Item of Elm_Toolbar. Sub-type of Elm_Widget_Item */
typedef struct _Elm_Toolbar_Item_State Elm_Toolbar_Item_State; /** State of a Elm_Toolbar_Item */
EAPI Evas_Object *elm_toolbar_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
EAPI void elm_toolbar_icon_size_set(Evas_Object *obj, int icon_size) EINA_ARG_NONNULL(1);
EAPI int elm_toolbar_icon_size_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
@ -1455,7 +1486,7 @@ extern "C" {
* default
* transparent (no background or shadow, just show the provided content)
*/
/* tooltip */
EAPI double elm_tooltip_delay_get(void);
EAPI Eina_Bool elm_tooltip_delay_set(double delay);
@ -1900,7 +1931,7 @@ extern "C" {
/* index */
typedef struct _Elm_Index_Item Elm_Index_Item; /**< Item of Elm_Index. Sub-type of Elm_Widget_Item */
EAPI Evas_Object *elm_index_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
EAPI void elm_index_active_set(Evas_Object *obj, Eina_Bool active) EINA_ARG_NONNULL(1);
EAPI void elm_index_item_level_set(Evas_Object *obj, int level) EINA_ARG_NONNULL(1);
@ -1935,7 +1966,7 @@ extern "C" {
ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL,
ELM_PHOTOCAM_ZOOM_MODE_LAST
} Elm_Photocam_Zoom_Mode;
EAPI Evas_Object *elm_photocam_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
EAPI Evas_Load_Error elm_photocam_file_set(Evas_Object *obj, const char *file) EINA_ARG_NONNULL(1);
EAPI const char *elm_photocam_file_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
@ -2004,7 +2035,7 @@ extern "C" {
typedef Evas_Object *(*ElmMapMarkerIconGetFunc) (Evas_Object *obj, Elm_Map_Marker *marker, void *data);
typedef Evas_Object *(*ElmMapGroupIconGetFunc) (Evas_Object *obj, void *data);
typedef char *(*ElmMapSourceURLFunc) (int x, int y, int zoom);
EAPI Evas_Object *elm_map_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
EAPI void elm_map_zoom_set(Evas_Object *obj, int zoom) EINA_ARG_NONNULL(1);
EAPI double elm_map_zoom_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
@ -2071,7 +2102,7 @@ extern "C" {
ELM_PANEL_ORIENT_LEFT,
ELM_PANEL_ORIENT_RIGHT,
} Elm_Panel_Orient;
EAPI Evas_Object *elm_panel_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
EAPI void elm_panel_orient_set(Evas_Object *obj, Elm_Panel_Orient orient) EINA_ARG_NONNULL(1);
EAPI Elm_Panel_Orient elm_panel_orient_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
@ -2127,7 +2158,7 @@ extern "C" {
/* smart callbacks called:
* "animate,done" - when a flip animation is finished
*/
/* scrolledentry */
EAPI Evas_Object *elm_scrolled_entry_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
EAPI void elm_scrolled_entry_single_line_set(Evas_Object *obj, Eina_Bool single_line) EINA_ARG_NONNULL(1);
@ -2238,7 +2269,7 @@ extern "C" {
*/
/* animator */
typedef enum
typedef enum
{
ELM_ANIMATOR_CURVE_LINEAR,
ELM_ANIMATOR_CURVE_IN_OUT,
@ -2277,12 +2308,12 @@ extern "C" {
EAPI void elm_animator_resume(Elm_Animator *animator) EINA_ARG_NONNULL(1);
/* calendar */
typedef enum
typedef enum
{
ELM_CALENDAR_UNIQUE,
ELM_CALENDAR_UNIQUE,
ELM_CALENDAR_DAILY,
ELM_CALENDAR_WEEKLY,
ELM_CALENDAR_MONTHLY,
ELM_CALENDAR_MONTHLY,
ELM_CALENDAR_ANNUALLY
} Elm_Calendar_Mark_Repeat;
typedef struct _Elm_Calendar_Mark Elm_Calendar_Mark;
@ -2307,7 +2338,7 @@ extern "C" {
EAPI void elm_calendar_text_saturday_color_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
EAPI void elm_calendar_text_sunday_color_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
EAPI void elm_calendar_text_weekday_color_set(Evas_Object *obj, int pos) EINA_ARG_NONNULL(1);
/* smart callbacks called:
* changed - emitted when the user select a day or change the displayed
* month.
@ -2368,7 +2399,7 @@ extern "C" {
/* ctxpopup */
typedef struct _Elm_Ctxpopup_Item Elm_Ctxpopup_Item;
EAPI Evas_Object *elm_ctxpopup_add(Evas_Object* parent) EINA_ARG_NONNULL(1);
EAPI void elm_ctxpopup_hover_end(Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI Evas_Object *elm_ctxpopup_item_icon_get(const Elm_Ctxpopup_Item *item) EINA_ARG_NONNULL(1);
@ -2413,7 +2444,7 @@ extern "C" {
ELM_TRANSIT_EFFECT_WIPE_TYPE_HIDE,
ELM_TRANSIT_EFFECT_WIPE_TYPE_SHOW
} Elm_Fx_Wipe_Type;
typedef struct _Elm_Transit Elm_Transit;
EAPI Elm_Transit *elm_transit_add(double duration);
@ -2493,7 +2524,7 @@ extern "C" {
typedef void (*Elm_Store_Item_Fetch_Cb) (void *data, Elm_Store_Item *sti);
typedef void (*Elm_Store_Item_Unfetch_Cb) (void *data, Elm_Store_Item *sti);
typedef void *(*Elm_Store_Item_Mapping_Cb) (void *data, Elm_Store_Item *sti, const char *part);
typedef enum
{
ELM_STORE_ITEM_MAPPING_NONE = 0,
@ -2505,7 +2536,7 @@ extern "C" {
// can add more here as needed by common apps
ELM_STORE_ITEM_MAPPING_LAST
} Elm_Store_Item_Mapping_Type;
struct _Elm_Store_Item_Mapping_Icon
{
// FIXME: allow edje file icons
@ -2517,22 +2548,22 @@ extern "C" {
Eina_Bool scale_up : 1;
Eina_Bool scale_down : 1;
};
struct _Elm_Store_Item_Mapping_Empty
{
Eina_Bool dummy;
};
struct _Elm_Store_Item_Mapping_Photo
{
int size;
};
struct _Elm_Store_Item_Mapping_Custom
{
Elm_Store_Item_Mapping_Cb func;
};
struct _Elm_Store_Item_Mapping
{
Elm_Store_Item_Mapping_Type type;
@ -2546,7 +2577,7 @@ extern "C" {
// add more types here
} details;
};
struct _Elm_Store_Item_Info
{
Elm_Genlist_Item_Class *item_class;
@ -2560,26 +2591,26 @@ extern "C" {
Elm_Store_Item_Info base;
char *path;
};
#define ELM_STORE_ITEM_MAPPING_END { ELM_STORE_ITEM_MAPPING_NONE, NULL, 0, { .empty = { EINA_TRUE } } }
#define ELM_STORE_ITEM_MAPPING_OFFSET(st, it) offsetof(st, it)
EAPI void elm_store_free(Elm_Store *st);
EAPI Elm_Store *elm_store_filesystem_new(void);
EAPI void elm_store_filesystem_directory_set(Elm_Store *st, const char *dir) EINA_ARG_NONNULL(1);
EAPI const char *elm_store_filesystem_directory_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
EAPI const char *elm_store_item_filesystem_path_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
EAPI void elm_store_target_genlist_set(Elm_Store *st, Evas_Object *obj) EINA_ARG_NONNULL(1);
EAPI void elm_store_cache_set(Elm_Store *st, int max) EINA_ARG_NONNULL(1);
EAPI int elm_store_cache_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
EAPI void elm_store_list_func_set(Elm_Store *st, Elm_Store_Item_List_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
EAPI void elm_store_fetch_func_set(Elm_Store *st, Elm_Store_Item_Fetch_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
EAPI void elm_store_fetch_thread_set(Elm_Store *st, Eina_Bool use_thread) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_store_fetch_thread_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
EAPI void elm_store_unfetch_func_set(Elm_Store *st, Elm_Store_Item_Unfetch_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
EAPI void elm_store_sorted_set(Elm_Store *st, Eina_Bool sorted) EINA_ARG_NONNULL(1);
EAPI Eina_Bool elm_store_sorted_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
@ -2587,7 +2618,7 @@ extern "C" {
EAPI void *elm_store_item_data_get(Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
EAPI const Elm_Store *elm_store_item_store_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
EAPI const Elm_Genlist_Item *elm_store_item_genlist_item_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
#ifdef __cplusplus
}
#endif

View File

@ -67,7 +67,7 @@ static size_t _elm_user_dir_snprintf(char *dst, size_t size, const char *fmt, ..
#ifdef HAVE_ELEMENTARY_X
static Ecore_Event_Handler *_prop_change_handler = NULL;
static Ecore_X_Window _root_1st = 0;
#define ATOM_COUNT 11
#define ATOM_COUNT 21
static Ecore_X_Atom _atom[ATOM_COUNT];
static Ecore_X_Atom _atom_config = 0;
static const char *_atom_names[ATOM_COUNT] =
@ -82,6 +82,16 @@ static const char *_atom_names[ATOM_COUNT] =
"ENLIGHTENMENT_IMAGE_CACHE",
"ENLIGHTENMENT_EDJE_FILE_CACHE",
"ENLIGHTENMENT_EDJE_COLLECTION_CACHE",
"ENLIGHTENMENT_THUMBSCROLL_BOUNCE_ENABLE",
"ENLIGHTENMENT_THUMBSCROLL_BOUNCE_FRICTION",
"ENLIGHTENMENT_THUMBSCROLL_ENABLE",
"ENLIGHTENMENT_THUMBSCROLL_THRESHOLD",
"ENLIGHTENMENT_THUMBSCROLL_MOMENTUM_THRESHOLD",
"ENLIGHTENMENT_THUMBSCROLL_FRICTION",
"ENLIGHTENMENT_THUMBSCROLL_BORDER_FRICTION",
"ENLIGHTENMENT_THUMBSCROLL_PAGE_SCROLL_FRICTION",
"ENLIGHTENMENT_THUMBSCROLL_BRING_IN_SCROLL_FRICTION",
"ENLIGHTENMENT_THUMBSCROLL_ZOOM_FRICTION",
"ENLIGHTENMENT_CONFIG"
};
#define ATOM_E_SCALE 0
@ -94,7 +104,17 @@ static const char *_atom_names[ATOM_COUNT] =
#define ATOM_E_IMAGE_CACHE 7
#define ATOM_E_EDJE_FILE_CACHE 8
#define ATOM_E_EDJE_COLLECTION_CACHE 9
#define ATOM_E_CONFIG 10
#define ATOM_E_THUMBSCROLL_BOUNCE_ENABLE 10
#define ATOM_E_THUMBSCROLL_BOUNCE_FRICTION 11
#define ATOM_E_THUMBSCROLL_ENABLE 12
#define ATOM_E_THUMBSCROLL_THRESHOLD 13
#define ATOM_E_THUMBSCROLL_MOMENTUM_THRESHOLD 14
#define ATOM_E_THUMBSCROLL_FRICTION 15
#define ATOM_E_THUMBSCROLL_BORDER_FRICTION 16
#define ATOM_E_THUMBSCROLL_PAGE_SCROLL_FRICTION 17
#define ATOM_E_THUMBSCROLL_BRING_IN_SCROLL_FRICTION 18
#define ATOM_E_THUMBSCROLL_ZOOM_FRICTION 19
#define ATOM_E_CONFIG 20
static Eina_Bool _prop_config_get(void);
static Eina_Bool _prop_change(void *data __UNUSED__, int ev_type __UNUSED__, void *ev);
@ -256,7 +276,7 @@ _prop_change(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
_elm_rescale();
}
}
if (event->atom == _atom[ATOM_E_CACHE_FLUSH_INTERVAL])
else if (event->atom == _atom[ATOM_E_CACHE_FLUSH_INTERVAL])
{
unsigned int val = 1000;
@ -273,7 +293,7 @@ _prop_change(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
_elm_recache();
}
}
if (event->atom == _atom[ATOM_E_FONT_CACHE])
else if (event->atom == _atom[ATOM_E_FONT_CACHE])
{
unsigned int val = 1000;
@ -289,7 +309,7 @@ _prop_change(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
_elm_recache();
}
}
if (event->atom == _atom[ATOM_E_IMAGE_CACHE])
else if (event->atom == _atom[ATOM_E_IMAGE_CACHE])
{
unsigned int val = 1000;
@ -305,7 +325,7 @@ _prop_change(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
_elm_recache();
}
}
if (event->atom == _atom[ATOM_E_EDJE_FILE_CACHE])
else if (event->atom == _atom[ATOM_E_EDJE_FILE_CACHE])
{
unsigned int val = 1000;
@ -321,7 +341,7 @@ _prop_change(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
_elm_recache();
}
}
if (event->atom == _atom[ATOM_E_EDJE_COLLECTION_CACHE])
else if (event->atom == _atom[ATOM_E_EDJE_COLLECTION_CACHE])
{
unsigned int val = 1000;
@ -338,6 +358,130 @@ _prop_change(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
_elm_recache();
}
}
else if (event->atom == _atom[ATOM_E_THUMBSCROLL_BOUNCE_ENABLE])
{
unsigned int val = 1000;
if (ecore_x_window_prop_card32_get(event->win,
event->atom,
&val, 1) > 0)
{
_elm_config->thumbscroll_bounce_enable = !!val;
}
}
else if (event->atom == _atom[ATOM_E_THUMBSCROLL_BOUNCE_FRICTION])
{
unsigned int val = 1000;
if (ecore_x_window_prop_card32_get(event->win,
event->atom,
&val, 1) > 0)
{
if (val > 0)
_elm_config->thumbscroll_bounce_friction =
(double)val / 1000.0;
}
}
else if (event->atom == _atom[ATOM_E_THUMBSCROLL_ENABLE])
{
unsigned int val = 1000;
if (ecore_x_window_prop_card32_get(event->win,
event->atom,
&val, 1) > 0)
{
_elm_config->thumbscroll_enable = !!val;
}
}
else if (event->atom == _atom[ATOM_E_THUMBSCROLL_THRESHOLD])
{
unsigned int val = 1000;
if (ecore_x_window_prop_card32_get(event->win,
event->atom,
&val, 1) > 0)
{
if (val > 0) _elm_config->thumbscroll_threshold = val;
}
}
else if (event->atom == _atom[ATOM_E_THUMBSCROLL_MOMENTUM_THRESHOLD])
{
unsigned int val = 1000;
if (ecore_x_window_prop_card32_get(event->win,
event->atom,
&val, 1) > 0)
{
if (val > 0)
_elm_config->thumbscroll_momentum_threshold =
(double)val / 1000.0;
}
}
else if (event->atom == _atom[ATOM_E_THUMBSCROLL_FRICTION])
{
unsigned int val = 1000;
if (ecore_x_window_prop_card32_get(event->win,
event->atom,
&val, 1) > 0)
{
if (val > 0)
_elm_config->thumbscroll_friction = (double)val / 1000.0;
}
}
else if (event->atom == _atom[ATOM_E_THUMBSCROLL_BORDER_FRICTION])
{
unsigned int val = 1000;
if (ecore_x_window_prop_card32_get(event->win,
event->atom,
&val, 1) > 0)
{
if (val > 0)
_elm_config->thumbscroll_border_friction =
(double)val / 1000.0;
}
}
else if (event->atom == _atom[ATOM_E_THUMBSCROLL_PAGE_SCROLL_FRICTION])
{
unsigned int val = 1000;
if (ecore_x_window_prop_card32_get(event->win,
event->atom,
&val, 1) > 0)
{
if (val > 0)
_elm_config->page_scroll_friction =
(double)val / 1000.0;
}
}
else if (event->atom ==
_atom[ATOM_E_THUMBSCROLL_BRING_IN_SCROLL_FRICTION])
{
unsigned int val = 1000;
if (ecore_x_window_prop_card32_get(event->win,
event->atom,
&val, 1) > 0)
{
if (val > 0)
_elm_config->bring_in_scroll_friction =
(double)val / 1000.0;
}
}
else if (event->atom ==
_atom[ATOM_E_THUMBSCROLL_ZOOM_FRICTION])
{
unsigned int val = 1000;
if (ecore_x_window_prop_card32_get(event->win,
event->atom,
&val, 1) > 0)
{
if (val > 0)
_elm_config->zoom_friction = (double)val / 1000.0;
}
}
else if (((_atom_config > 0) && (event->atom == _atom_config)) ||
(event->atom == _atom[ATOM_E_CONFIG]))
{
@ -1176,6 +1320,7 @@ static void
_env_get(void)
{
char *s;
double friction;
s = getenv("ELM_ENGINE");
if (s)
@ -1244,6 +1389,10 @@ _env_get(void)
if (s) _elm_config->thumbscroll_momentum_threshold = atof(s);
s = getenv("ELM_THUMBSCROLL_FRICTION");
if (s) _elm_config->thumbscroll_friction = atof(s);
s = getenv("ELM_THUMBSCROLL_BOUNCE_ENABLE");
if (s) _elm_config->thumbscroll_bounce_enable = !!atoi(s);
s = getenv("ELM_THUMBSCROLL_BOUNCE_FRICTION");
if (s) _elm_config->thumbscroll_bounce_friction = atof(s);
s = getenv("ELM_PAGE_SCROLL_FRICTION");
if (s) _elm_config->page_scroll_friction = atof(s);
s = getenv("ELM_BRING_IN_SCROLL_FRICTION");
@ -1251,8 +1400,17 @@ _env_get(void)
s = getenv("ELM_ZOOM_FRICTION");
if (s) _elm_config->zoom_friction = atof(s);
s = getenv("ELM_THUMBSCROLL_BORDER_FRICTION");
if (s) _elm_config->thumbscroll_border_friction = atof(s);
if (s)
{
friction = atof(s);
if (friction < 0.0)
friction = 0.0;
if (friction > 1.0)
friction = 1.0;
_elm_config->thumbscroll_border_friction = friction;
}
s = getenv("ELM_THEME");
if (s) eina_stringshare_replace(&_elm_config->theme, s);
@ -1354,7 +1512,8 @@ _env_get(void)
s = getenv("ELM_LONGPRESS_TIMEOUT");
if (s) _elm_config->longpress_timeout = atof(s);
if (_elm_config->longpress_timeout < 0.0) _elm_config->longpress_timeout = 0.0;
if (_elm_config->longpress_timeout < 0.0)
_elm_config->longpress_timeout = 0.0;
}
void

View File

@ -1400,8 +1400,7 @@ elm_profile_all_set(const char *profile)
#ifdef HAVE_ELEMENTARY_X
static Ecore_X_Atom atom = 0;
if (!atom)
atom = ecore_x_atom_get("ENLIGHTENMENT_PROFILE");
if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_PROFILE");
ecore_x_window_prop_string_set(ecore_x_window_root_first_get(),
atom, profile);
#endif
@ -2400,6 +2399,567 @@ elm_focus_highlight_animate_set(Eina_Bool animate)
_elm_config->focus_highlight_animate = !!animate;
}
/**
* @defgroup Scrolling Scrolling
*
* These are functions setting how scrollable views in Elementary
* widgets should behave on user interaction.
*/
/**
* Get whether scrollers should bounce when they reach their
* viewport's edge during a scroll.
*
* @return the thumb scroll bouncing state
*
* This is the default behavior for touch screens, in general.
* @ingroup Scrolling
*/
EAPI Eina_Bool
elm_scroll_bounce_enabled_get(void)
{
return _elm_config->thumbscroll_bounce_enable;
}
/**
* Set whether scrollers should bounce when they reach their
* viewport's edge during a scroll.
*
* @param enabled the thumb scroll bouncing state
*
* @see elm_thumbscroll_bounce_enabled_get()
* @ingroup Scrolling
*/
EAPI void
elm_scroll_bounce_enabled_set(Eina_Bool enabled)
{
_elm_config->thumbscroll_bounce_enable = enabled;
}
/**
* Set whether scrollers should bounce when they reach their
* viewport's edge during a scroll, for all Elementary application
* windows.
*
* @param enabled the thumb scroll bouncing state
*
* @see elm_thumbscroll_bounce_enabled_get()
* @ingroup Scrolling
*/
EAPI void
elm_scroll_bounce_enabled_all_set(Eina_Bool enabled)
{
#ifdef HAVE_ELEMENTARY_X
static Ecore_X_Atom atom = 0;
unsigned int bounce_enable_i = (unsigned int)enabled;
if (!atom)
atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_BOUNCE_ENABLE");
ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
atom, &bounce_enable_i, 1);
#endif
}
/**
* Get the amount of inertia a scroller will impose at bounce
* animations.
*
* @return the thumb scroll bounce friction
*
* @ingroup Scrolling
*/
EAPI double
elm_scroll_bounce_friction_get(void)
{
return _elm_config->thumbscroll_bounce_friction;
}
/**
* Set the amount of inertia a scroller will impose at bounce
* animations.
*
* @param friction the thumb scroll bounce friction
*
* @see elm_thumbscroll_bounce_friction_get()
* @ingroup Scrolling
*/
EAPI void
elm_scroll_bounce_friction_set(double friction)
{
_elm_config->thumbscroll_bounce_friction = friction;
}
/**
* Set the amount of inertia a scroller will impose at bounce
* animations, for all Elementary application windows.
*
* @param friction the thumb scroll bounce friction
*
* @see elm_thumbscroll_bounce_friction_get()
* @ingroup Scrolling
*/
EAPI void
elm_scroll_bounce_friction_all_set(double friction)
{
#ifdef HAVE_ELEMENTARY_X
static Ecore_X_Atom atom = 0;
unsigned int bounce_friction_i = (unsigned int)(friction * 1000.0);
if (!atom)
atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_BOUNCE_FRICTION");
ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
atom, &bounce_friction_i, 1);
#endif
}
/**
* Get the amount of inertia a <b>paged</b> scroller will impose at
* page fitting animations.
*
* @return the page scroll friction
*
* @ingroup Scrolling
*/
EAPI double
elm_scroll_page_scroll_friction_get(void)
{
return _elm_config->page_scroll_friction;
}
/**
* Set the amount of inertia a <b>paged</b> scroller will impose at
* page fitting animations.
*
* @param friction the page scroll friction
*
* @see elm_thumbscroll_page_scroll_friction_get()
* @ingroup Scrolling
*/
EAPI void
elm_scroll_page_scroll_friction_set(double friction)
{
_elm_config->page_scroll_friction = friction;
}
/**
* Set the amount of inertia a <b>paged</b> scroller will impose at
* page fitting animations, for all Elementary application windows.
*
* @param friction the page scroll friction
*
* @see elm_thumbscroll_page_scroll_friction_get()
* @ingroup Scrolling
*/
EAPI void
elm_scroll_page_scroll_friction_all_set(double friction)
{
#ifdef HAVE_ELEMENTARY_X
static Ecore_X_Atom atom = 0;
unsigned int page_scroll_friction_i = (unsigned int)(friction * 1000.0);
if (!atom)
atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_PAGE_SCROLL_FRICTION");
ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
atom, &page_scroll_friction_i, 1);
#endif
}
/**
* Get the amount of inertia a scroller will impose at region bring
* animations.
*
* @return the bring in scroll friction
*
* @ingroup Scrolling
*/
EAPI double
elm_scroll_bring_in_scroll_friction_get(void)
{
return _elm_config->bring_in_scroll_friction;
}
/**
* Set the amount of inertia a scroller will impose at region bring
* animations.
*
* @param friction the bring in scroll friction
*
* @see elm_thumbscroll_bring_in_scroll_friction_get()
* @ingroup Scrolling
*/
EAPI void
elm_scroll_bring_in_scroll_friction_set(double friction)
{
_elm_config->bring_in_scroll_friction = friction;
}
/**
* Set the amount of inertia a scroller will impose at region bring
* animations, for all Elementary application windows.
*
* @param friction the bring in scroll friction
*
* @see elm_thumbscroll_bring_in_scroll_friction_get()
* @ingroup Scrolling
*/
EAPI void
elm_scroll_bring_in_scroll_friction_all_set(double friction)
{
#ifdef HAVE_ELEMENTARY_X
static Ecore_X_Atom atom = 0;
unsigned int bring_in_scroll_friction_i = (unsigned int)(friction * 1000.0);
if (!atom)
atom =
ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_BRING_IN_SCROLL_FRICTION");
ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
atom, &bring_in_scroll_friction_i, 1);
#endif
}
/**
* Get the amount of inertia scrollers will impose at animations
* triggered by Elementary widgets' zooming API.
*
* @return the zoom friction
*
* @ingroup Scrolling
*/
EAPI double
elm_scroll_zoom_friction_get(void)
{
return _elm_config->zoom_friction;
}
/**
* Set the amount of inertia scrollers will impose at animations
* triggered by Elementary widgets' zooming API.
*
* @param friction the zoom friction
*
* @see elm_thumbscroll_zoom_friction_get()
* @ingroup Scrolling
*/
EAPI void
elm_scroll_zoom_friction_set(double friction)
{
_elm_config->zoom_friction = friction;
}
/**
* Set the amount of inertia scrollers will impose at animations
* triggered by Elementary widgets' zooming API, for all Elementary
* application windows.
*
* @param friction the zoom friction
*
* @see elm_thumbscroll_zoom_friction_get()
* @ingroup Scrolling
*/
EAPI void
elm_scroll_zoom_friction_all_set(double friction)
{
#ifdef HAVE_ELEMENTARY_X
static Ecore_X_Atom atom = 0;
unsigned int zoom_friction_i = (unsigned int)(friction * 1000.0);
if (!atom)
atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_ZOOM_FRICTION");
ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
atom, &zoom_friction_i, 1);
#endif
}
/**
* Get whether scrollers should be draggable from any point in their
* views.
*
* @return the thumb scroll state
*
* @note This is the default behavior for touch screens, in general.
* @note All other functions namespaced with "thumbscroll" will only
* have effect if this mode is enabled.
*
* @ingroup Scrolling
*/
EAPI Eina_Bool
elm_scroll_thumbscroll_enabled_get(void)
{
return _elm_config->thumbscroll_enable;
}
/**
* Set whether scrollers should be draggable from any point in their
* views.
*
* @param enabled the thumb scroll state
*
* @see elm_thumbscroll_enabled_get()
* @ingroup Scrolling
*/
EAPI void
elm_scroll_thumbscroll_enabled_set(Eina_Bool enabled)
{
_elm_config->thumbscroll_enable = enabled;
}
/**
* Set whether scrollers should be draggable from any point in their
* views, for all Elementary application windows.
*
* @param enabled the thumb scroll state
*
* @see elm_thumbscroll_enabled_get()
* @ingroup Scrolling
*/
EAPI void
elm_scroll_thumbscroll_enabled_all_set(Eina_Bool enabled)
{
#ifdef HAVE_ELEMENTARY_X
static Ecore_X_Atom atom = 0;
unsigned int ts_enable_i = (unsigned int)enabled;
if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_ENABLE");
ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
atom, &ts_enable_i, 1);
#endif
}
/**
* Get the number of pixels one should travel while dragging a
* scroller's view to actually trigger scrolling.
*
* @return the thumb scroll threshould
*
* One would use higher values for touch screens, in general, because
* of their inherent imprecision.
* @ingroup Scrolling
*/
EAPI unsigned int
elm_scroll_thumbscroll_threshold_get(void)
{
return _elm_config->thumbscroll_threshold;
}
/**
* Set the number of pixels one should travel while dragging a
* scroller's view to actually trigger scrolling.
*
* @param threshold the thumb scroll threshould
*
* @see elm_thumbscroll_threshould_get()
* @ingroup Scrolling
*/
EAPI void
elm_scroll_thumbscroll_threshold_set(unsigned int threshold)
{
_elm_config->thumbscroll_threshold = threshold;
}
/**
* Set the number of pixels one should travel while dragging a
* scroller's view to actually trigger scrolling, for all Elementary
* application windows.
*
* @param threshold the thumb scroll threshould
*
* @see elm_thumbscroll_threshould_get()
* @ingroup Scrolling
*/
EAPI void
elm_scroll_thumbscroll_threshold_all_set(unsigned int threshold)
{
#ifdef HAVE_ELEMENTARY_X
static Ecore_X_Atom atom = 0;
unsigned int ts_threshold_i = (unsigned int)threshold;
if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_THRESHOLD");
ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
atom, &ts_threshold_i, 1);
#endif
}
/**
* Get the minimum speed of mouse cursor movement which will trigger
* list self scrolling animation after a mouse up event
* (pixels/second).
*
* @return the thumb scroll momentum threshould
*
* @ingroup Scrolling
*/
EAPI double
elm_scroll_thumbscroll_momentum_threshold_get(void)
{
return _elm_config->thumbscroll_momentum_threshold;
}
/**
* Set the minimum speed of mouse cursor movement which will trigger
* list self scrolling animation after a mouse up event
* (pixels/second).
*
* @param threshold the thumb scroll momentum threshould
*
* @see elm_thumbscroll_momentum_threshould_get()
* @ingroup Scrolling
*/
EAPI void
elm_scroll_thumbscroll_momentum_threshold_set(double threshold)
{
_elm_config->thumbscroll_momentum_threshold = threshold;
}
/**
* Set the minimum speed of mouse cursor movement which will trigger
* list self scrolling animation after a mouse up event
* (pixels/second), for all Elementary application windows.
*
* @param threshold the thumb scroll momentum threshould
*
* @see elm_thumbscroll_momentum_threshould_get()
* @ingroup Scrolling
*/
EAPI void
elm_scroll_thumbscroll_momentum_threshold_all_set(double threshold)
{
#ifdef HAVE_ELEMENTARY_X
static Ecore_X_Atom atom = 0;
unsigned int ts_momentum_threshold_i = (unsigned int)(threshold * 1000.0);
if (!atom)
atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_MOMENTUM_THRESHOLD");
ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
atom, &ts_momentum_threshold_i, 1);
#endif
}
/**
* Get the amount of inertia a scroller will impose at self scrolling
* animations.
*
* @return the thumb scroll friction
*
* @ingroup Scrolling
*/
EAPI double
elm_scroll_thumbscroll_friction_get(void)
{
return _elm_config->thumbscroll_friction;
}
/**
* Set the amount of inertia a scroller will impose at self scrolling
* animations.
*
* @param friction the thumb scroll friction
*
* @see elm_thumbscroll_friction_get()
* @ingroup Scrolling
*/
EAPI void
elm_scroll_thumbscroll_friction_set(double friction)
{
_elm_config->thumbscroll_friction = friction;
}
/**
* Set the amount of inertia a scroller will impose at self scrolling
* animations, for all Elementary application windows.
*
* @param friction the thumb scroll friction
*
* @see elm_thumbscroll_friction_get()
* @ingroup Scrolling
*/
EAPI void
elm_scroll_thumbscroll_friction_all_set(double friction)
{
#ifdef HAVE_ELEMENTARY_X
static Ecore_X_Atom atom = 0;
unsigned int ts_friction_i = (unsigned int)(friction * 1000.0);
if (!atom) atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_FRICTION");
ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
atom, &ts_friction_i, 1);
#endif
}
/**
* Get the amount of lag between your actual mouse cursor dragging
* movement and a scroller's view movement itself, while pushing it
* into bounce state manually.
*
* @return the thumb scroll border friction
*
* @ingroup Scrolling
*/
EAPI double
elm_scroll_thumbscroll_border_friction_get(void)
{
return _elm_config->thumbscroll_border_friction;
}
/**
* Set the amount of lag between your actual mouse cursor dragging
* movement and a scroller's view movement itself, while pushing it
* into bounce state manually.
*
* @param friction the thumb scroll border friction. @c 0.0 for
* perfect synchrony between two movements, @c 1.0 for maximum
* lag.
*
* @see elm_thumbscroll_border_friction_get()
* @note parameter value will get bound to 0.0 - 1.0 interval, always
*
* @ingroup Scrolling
*/
EAPI void
elm_scroll_thumbscroll_border_friction_set(double friction)
{
if (friction < 0.0)
friction = 0.0;
if (friction > 1.0)
friction = 1.0;
_elm_config->thumbscroll_friction = friction;
}
/**
* Set the amount of lag between your actual mouse cursor dragging
* movement and a scroller's view movement itself, while pushing it
* into bounce state manually, for all Elementary application windows.
*
* @param friction the thumb scroll border friction. @c 0.0 for
* perfect synchrony between two movements, @c 1.0 for maximum
* lag.
*
* @see elm_thumbscroll_border_friction_get()
* @note parameter value will get bound to 0.0 - 1.0 interval, always
*
* @ingroup Scrolling
*/
EAPI void
elm_scroll_thumbscroll_border_friction_all_set(double friction)
{
if (friction < 0.0)
friction = 0.0;
if (friction > 1.0)
friction = 1.0;
#ifdef HAVE_ELEMENTARY_X
static Ecore_X_Atom atom = 0;
unsigned int border_friction_i = (unsigned int)(friction * 1000.0);
if (!atom)
atom = ecore_x_atom_get("ENLIGHTENMENT_THUMBSCROLL_BORDER_FRICTION");
ecore_x_window_prop_card32_set(ecore_x_window_root_first_get(),
atom, &border_friction_i, 1);
#endif
}
/**
* @defgroup Scrollhints Scrollhints
*