From 6dc5aa2fe2c55ce9a3ac538093585f9e341cf971 Mon Sep 17 00:00:00 2001 From: Hannes Janetzek Date: Sat, 17 Apr 2010 19:13:01 +0000 Subject: [PATCH] 'everything' nicer slide SVN revision: 48082 --- src/modules/everything/evry.c | 21 ++++-- src/modules/everything/evry_plug_view_thumb.c | 68 ++++++++++++++----- .../everything/evry_view_plugin_tabs.c | 2 +- 3 files changed, 66 insertions(+), 25 deletions(-) diff --git a/src/modules/everything/evry.c b/src/modules/everything/evry.c index 6ba8b8ccd..2b53f4de0 100644 --- a/src/modules/everything/evry.c +++ b/src/modules/everything/evry.c @@ -71,7 +71,7 @@ static void _evry_view_update(Evry_State *s, Evry_Plugin *plugin); static int _evry_view_key_press(Evry_State *s, Ecore_Event_Key *ev); static int _evry_view_toggle(Evry_State *s, const char *trigger); static void _evry_view_show(Evry_View *v); -static void _evry_view_hide(Evry_View *v); +static void _evry_view_hide(Evry_View *v, int slide); static void _evry_item_desel(Evry_State *s, Evry_Item *it); static void _evry_item_sel(Evry_State *s, Evry_Item *it); @@ -770,8 +770,8 @@ _evry_selector_activate(Evry_Selector *sel) if (s && s->view) { - s->view->clear(s->view, 0); - _evry_view_hide(s->view); + /* s->view->clear(s->view, 0); */ + _evry_view_hide(s->view, 0); } _evry_list_win_clear(evry_conf->hide_list); @@ -1199,7 +1199,7 @@ evry_browse_item(Evry_Selector *sel) if (s->view) { - _evry_view_hide(s->view); + _evry_view_hide(s->view, 1); view = s->view; } @@ -1724,10 +1724,12 @@ _evry_view_show(Evry_View *v) } static void -_evry_view_hide(Evry_View *v) +_evry_view_hide(Evry_View *v, int slide) { if (!v) return; + v->clear(v, slide); + if (v->o_list) { edje_object_part_unswallow(list->o_main, v->o_list); @@ -1828,7 +1830,7 @@ _evry_view_toggle(Evry_State *s, const char *trigger) if (s->view) { - _evry_view_hide(s->view); + _evry_view_hide(s->view, 0); s->view->destroy(s->view); } @@ -1977,9 +1979,14 @@ _evry_plugin_select(Evry_State *s, Evry_Plugin *p) void evry_plugin_select(const Evry_State *s, Evry_Plugin *p) { + Evry_Selector *sel; + _evry_plugin_select((Evry_State *) s, p); - _evry_selector_update(_evry_selector_for_plugin_get(p)); + sel = _evry_selector_for_plugin_get(p); + + if (sel) + _evry_selector_update(sel); } static void diff --git a/src/modules/everything/evry_plug_view_thumb.c b/src/modules/everything/evry_plug_view_thumb.c index 61393bc9b..4f75694a9 100644 --- a/src/modules/everything/evry_plug_view_thumb.c +++ b/src/modules/everything/evry_plug_view_thumb.c @@ -54,7 +54,9 @@ struct _Smart_Data int slide_offset; double slide; double slide_to; + int sliding; + int clearing; }; struct _Item @@ -76,6 +78,10 @@ struct _Item static View *view = NULL; static const char *view_types = NULL; + +static void _view_clear(Evry_View *view, int slide); + + static void _thumb_gen(void *data, Evas_Object *obj, void *event_info) { @@ -619,7 +625,7 @@ _animator(void *data) Smart_Data *sd = evas_object_smart_data_get(data); double da; double spd = (25.0/(double)e_config->framerate) / (double) (1 + sd->view->zoom); - if (sd->sliding) spd *= 1.5; + /* if (sd->sliding) spd *= 1.5; */ if (spd > 0.9) spd = 0.9; int wait = 0; @@ -662,12 +668,18 @@ _animator(void *data) { sd->slide = sd->slide_to; sd->sliding = 0; + + if (sd->clearing) + { + _view_clear(EVRY_VIEW(sd->view), 0); + sd->animator = NULL; + return 0; + } } - else wait++; - evas_object_move(sd->view->span, sd->slide, sd->y); + evas_object_move(sd->view->span, sd->slide, sd->y); } if (wait) return 1; @@ -858,6 +870,26 @@ _view_clear(Evry_View *view, int slide) Smart_Data *sd = evas_object_smart_data_get(v->span); Item *it; + if (!sd->clearing && evry_conf->scroll_animate) + { + if (slide) + { + if (sd->items && !sd->animator) + sd->animator = ecore_animator_add(_animator, v->span); + sd->sliding = 1; + sd->slide = sd->x; + sd->slide_to = sd->x + sd->w * -slide; + + sd->clearing = EINA_TRUE; + return; + } + + if (sd->animator) + ecore_animator_del(sd->animator); + } + + sd->clearing = EINA_FALSE; + _clear_items(v->span); EINA_LIST_FREE(sd->items, it) @@ -1042,19 +1074,19 @@ _view_update(Evry_View *view, int slide) if (evry_conf->scroll_animate) { - if (slide) - { - if (sd->items && !sd->animator) - sd->animator = ecore_animator_add(_animator, v->span); - sd->sliding = 1; - sd->slide_to = sd->x; - sd->slide = sd->x + sd->w * -slide; - } - else if (sd->sliding) - { - if (!sd->animator) - sd->animator = ecore_animator_add(_animator, v->span); - } + if (slide) + { + if (sd->items && !sd->animator) + sd->animator = ecore_animator_add(_animator, v->span); + sd->sliding = 1; + sd->slide_to = sd->x; + sd->slide = sd->x + sd->w * -slide; + } + else if (sd->sliding) + { + if (!sd->animator) + sd->animator = ecore_animator_add(_animator, v->span); + } } return 0; @@ -1068,6 +1100,7 @@ _cb_key_down(Evry_View *view, const Ecore_Event_Key *ev) Eina_List *l = NULL, *ll; Item *it = NULL; const Evry_State *s = v->state; + int slide; if (!s->plugin) return 0; @@ -1109,8 +1142,9 @@ _cb_key_down(Evry_View *view, const Ecore_Event_Key *ev) } } - if (v->tabs->key_down(v->tabs, ev)) + if ((slide = v->tabs->key_down(v->tabs, ev))) { + /* _view_update(view, -slide); */ _view_update(view, 0); return 1; } diff --git a/src/modules/everything/evry_view_plugin_tabs.c b/src/modules/everything/evry_view_plugin_tabs.c index 00f22d5df..2a0ded83f 100644 --- a/src/modules/everything/evry_view_plugin_tabs.c +++ b/src/modules/everything/evry_view_plugin_tabs.c @@ -20,7 +20,7 @@ _animator(void *data) Tab_View *v = data; double da; - double spd = (35.0 / (double)e_config->framerate); + double spd = (5.0 / (double)e_config->framerate); if (spd > 0.9) spd = 0.9; int wait = 0;