'everything'

- slight delay for rolling out the list.
- no delay for actions - on enter actions are directly updated and executed


SVN revision: 47851
This commit is contained in:
Hannes Janetzek 2010-04-08 23:29:35 +00:00
parent 0ef941962b
commit 261903c589
2 changed files with 62 additions and 20 deletions

View File

@ -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;
if (selectors[0]->update_timer)
{
_evry_matches_update(selectors[0], 0);
_evry_selector_update(selectors[0]);
}
s_subject = selectors[0]->state;
if (!s_subject || !s_subject->cur_item)
return;
if (selector == selectors[0] &&
selectors[1]->update_timer)
{
_evry_selector_actions_get(s_subject->cur_item);
if (!selectors[1]->state)
return;
_evry_selector_update(selectors[1]);
}
s_action = selectors[1]->state;
s_object = NULL;
if (!s_subject || !s_action)
return;
if (selector->update_timer)
{
_evry_matches_update(selector, 0);
_evry_selector_update(selector);
}
if (!s_subject->cur_item || !s_action->cur_item)
if (!s_action || !s_action->cur_item)
return;
/* FIXME */

View File

@ -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);
}