From 261903c589b8607a0a03b9a8749e936be167b96e Mon Sep 17 00:00:00 2001 From: Hannes Janetzek Date: Thu, 8 Apr 2010 23:29:35 +0000 Subject: [PATCH] 'everything' - slight delay for rolling out the list. - no delay for actions - on enter actions are directly updated and executed SVN revision: 47851 --- src/modules/everything/evry.c | 74 +++++++++++++++++----- .../everything/views/evry_plug_view_thumb.c | 6 +- 2 files changed, 61 insertions(+), 19 deletions(-) diff --git a/src/modules/everything/evry.c b/src/modules/everything/evry.c index 0c63a0e..e113717 100644 --- a/src/modules/everything/evry.c +++ b/src/modules/everything/evry.c @@ -131,6 +131,29 @@ _evry_cb_item_changed(void *data, int type, void *event) return 1; } +static Ecore_Timer *_show_timer = NULL; + +static int +_cb_show_timer(void *data) +{ + if (evry_conf->views && selector->state) + { + Evry_View *view =evry_conf->views->data; + Evry_State *s = selector->state; + + s->view = view->create(view, s, list->o_main); + + _evry_view_show(s->view); + } + else return 0; + + _evry_list_win_show(); + + _show_timer = NULL; + + return 0; +} + int evry_show(E_Zone *zone, const char *params) { @@ -169,12 +192,12 @@ evry_show(E_Zone *zone, const char *params) if (evry_conf->views && selector->state) { - Evry_View *view =evry_conf->views->data; - Evry_State *s = selector->state; - - s->view = view->create(view, s, list->o_main); - - _evry_view_show(s->view); + Evry_View *view =evry_conf->views->data; + Evry_State *s = selector->state; + + s->view = view->create(view, s, list->o_main); + + _evry_view_show(s->view); } else goto error3; @@ -208,7 +231,8 @@ evry_show(E_Zone *zone, const char *params) } if (!evry_conf->hide_list) - _evry_list_win_show(); + _show_timer = ecore_timer_add(0.08, _cb_show_timer, NULL); + /* _evry_list_win_show(); */ return 1; @@ -245,7 +269,11 @@ evry_hide(void) if (!win) return; /* _evry_view_clear(selector->state); */ - + if (_show_timer) + ecore_timer_del(_show_timer); + _show_timer = NULL; + + list->visible = EINA_FALSE; _evry_selector_free(selectors[0]); _evry_selector_free(selectors[1]); @@ -1536,20 +1564,32 @@ _evry_plugin_action(Evry_Selector *sel, int finished) { Evry_State *s_subject, *s_action, *s_object; - s_subject = selectors[0]->state; - s_action = selectors[1]->state; - s_object = NULL; + if (selectors[0]->update_timer) + { + _evry_matches_update(selectors[0], 0); + _evry_selector_update(selectors[0]); + } - if (!s_subject || !s_action) + s_subject = selectors[0]->state; + + if (!s_subject || !s_subject->cur_item) return; - - if (selector->update_timer) + + if (selector == selectors[0] && + selectors[1]->update_timer) { - _evry_matches_update(selector, 0); - _evry_selector_update(selector); + _evry_selector_actions_get(s_subject->cur_item); + + if (!selectors[1]->state) + return; + + _evry_selector_update(selectors[1]); } - if (!s_subject->cur_item || !s_action->cur_item) + s_action = selectors[1]->state; + s_object = NULL; + + if (!s_action || !s_action->cur_item) return; /* FIXME */ diff --git a/src/modules/everything/views/evry_plug_view_thumb.c b/src/modules/everything/views/evry_plug_view_thumb.c index ded5854..e5c4afa 100644 --- a/src/modules/everything/views/evry_plug_view_thumb.c +++ b/src/modules/everything/views/evry_plug_view_thumb.c @@ -937,6 +937,7 @@ _cb_key_down(Evry_View *view, const Ecore_Event_Key *ev) end: return 1; } + static int _cb_item_changed(void *data, int type, void *event) { @@ -945,6 +946,8 @@ _cb_item_changed(void *data, int type, void *event) Eina_List *l; Item *it; Smart_Data *sd = evas_object_smart_data_get(v->span); + + if (!sd) return 0; EINA_LIST_FOREACH(sd->items, l, it) if (it->item == ev->item) @@ -1040,8 +1043,7 @@ _view_destroy(Evry_View *view) EINA_LIST_FREE(v->handlers, h) ecore_event_handler_del(h); - - + E_FREE(v); } -- 2.7.4