forked from enlightenment/enlightenment
make return behavior consistent: always browse item.
cleanup selectors_switch: dont switch automatically back to subj selector cleanups SVN revision: 49233
This commit is contained in:
parent
702218034b
commit
52932a174a
|
@ -309,7 +309,7 @@ int evry_browse_back(Evry_Selector *sel);
|
||||||
void evry_plugin_action(int finished);
|
void evry_plugin_action(int finished);
|
||||||
|
|
||||||
int evry_state_push(Evry_Selector *sel, Eina_List *plugins);
|
int evry_state_push(Evry_Selector *sel, Eina_List *plugins);
|
||||||
void evry_selectors_switch(int dir, int slide);
|
int evry_selectors_switch(int dir, int slide);
|
||||||
int evry_view_toggle(Evry_State *s, const char *trigger);
|
int evry_view_toggle(Evry_State *s, const char *trigger);
|
||||||
|
|
||||||
Ecore_Event_Handler *evry_event_handler_add(int type, int (*func) (void *data, int type, void *event), const void *data);
|
Ecore_Event_Handler *evry_event_handler_add(int type, int (*func) (void *data, int type, void *event), const void *data);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#include "e.h"
|
#include "e.h"
|
||||||
#include "e_mod_main.h"
|
#include "e_mod_main.h"
|
||||||
|
|
||||||
/* TODO
|
/* TODO
|
||||||
* - keybinding configuration
|
* - keybinding configuration
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ static void _evry_selector_item_clear(Evry_Selector *sel);
|
||||||
static void _evry_selector_label_set(Evry_Selector *sel, const char *part, const char *label);
|
static void _evry_selector_label_set(Evry_Selector *sel, const char *part, const char *label);
|
||||||
static void _evry_selector_signal_emit(Evry_Selector *sel, const char *msg);
|
static void _evry_selector_signal_emit(Evry_Selector *sel, const char *msg);
|
||||||
static int _evry_selectors_shift(int dir);
|
static int _evry_selectors_shift(int dir);
|
||||||
static void _evry_selectors_switch(int dir);
|
static int _evry_selectors_switch(int dir);
|
||||||
|
|
||||||
static Evry_Window *_evry_window_new(E_Zone *zone, E_Zone_Edge edge);
|
static Evry_Window *_evry_window_new(E_Zone *zone, E_Zone_Edge edge);
|
||||||
static void _evry_window_free(Evry_Window *win);
|
static void _evry_window_free(Evry_Window *win);
|
||||||
|
@ -1491,6 +1491,8 @@ _evry_selector_subjects_get(const char *plugin_name)
|
||||||
EINA_LIST_FOREACH(plugins, l, p)
|
EINA_LIST_FOREACH(plugins, l, p)
|
||||||
p->state = sel->state;
|
p->state = sel->state;
|
||||||
|
|
||||||
|
DBG("%s", plugin_name);
|
||||||
|
|
||||||
_evry_matches_update(sel, 1);
|
_evry_matches_update(sel, 1);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -1809,7 +1811,7 @@ evry_browse_back(Evry_Selector *sel)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
int
|
||||||
evry_selectors_switch(int dir, int slide)
|
evry_selectors_switch(int dir, int slide)
|
||||||
{
|
{
|
||||||
Evry_State *s = (CUR_SEL)->state;
|
Evry_State *s = (CUR_SEL)->state;
|
||||||
|
@ -1826,55 +1828,62 @@ evry_selectors_switch(int dir, int slide)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (CUR_SEL != SUBJ_SEL && dir == 0)
|
||||||
|
{
|
||||||
|
edje_object_signal_emit(win->o_main, "e,state,object_selector_hide", "e");
|
||||||
|
_evry_selector_activate(SUBJ_SEL, (slide * SLIDE_RIGHT));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
if (CUR_SEL == SUBJ_SEL && dir > 0)
|
if (CUR_SEL == SUBJ_SEL && dir > 0)
|
||||||
{
|
{
|
||||||
if (s->cur_item)
|
if (s->cur_item)
|
||||||
_evry_selector_activate(ACTN_SEL, slide * SLIDE_LEFT);
|
{
|
||||||
|
_evry_selector_activate(ACTN_SEL, slide * SLIDE_LEFT);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (CUR_SEL == ACTN_SEL && dir > 0)
|
else if (CUR_SEL == ACTN_SEL && dir > 0)
|
||||||
{
|
{
|
||||||
int next_selector = 0;
|
|
||||||
Evry_Item *it;
|
Evry_Item *it;
|
||||||
|
|
||||||
if (s && (it = s->cur_item) &&
|
if (!s || !(it = s->cur_item) || !(it->plugin == (CUR_SEL)->actions))
|
||||||
(it->plugin == (CUR_SEL)->actions))
|
return 0;
|
||||||
{
|
|
||||||
GET_ACTION(act,it);
|
GET_ACTION(act,it);
|
||||||
if (act->it2.type)
|
if (!act->it2.type)
|
||||||
{
|
return 0;
|
||||||
_evry_selector_objects_get(act);
|
|
||||||
_evry_selector_update(OBJ_SEL);
|
_evry_selector_objects_get(act);
|
||||||
edje_object_signal_emit
|
_evry_selector_update(OBJ_SEL);
|
||||||
(win->o_main, "e,state,object_selector_show", "e");
|
edje_object_signal_emit(win->o_main, "e,state,object_selector_show", "e");
|
||||||
next_selector = 2;
|
|
||||||
}
|
_evry_selector_activate(OBJ_SEL, (slide * SLIDE_LEFT));
|
||||||
}
|
return 1;
|
||||||
_evry_selector_activate(win->selectors[next_selector],
|
|
||||||
slide * (next_selector ? SLIDE_LEFT : SLIDE_RIGHT));
|
|
||||||
}
|
}
|
||||||
else if (CUR_SEL == ACTN_SEL && dir < 0)
|
else if (CUR_SEL == ACTN_SEL && dir < 0)
|
||||||
{
|
{
|
||||||
_evry_selector_activate(SUBJ_SEL, (slide * SLIDE_RIGHT));
|
_evry_selector_activate(SUBJ_SEL, (slide * SLIDE_RIGHT));
|
||||||
edje_object_signal_emit(win->o_main, "e,state,object_selector_hide", "e");
|
edje_object_signal_emit(win->o_main, "e,state,object_selector_hide", "e");
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
else if (CUR_SEL == OBJ_SEL && dir > 0)
|
/* else if (CUR_SEL == OBJ_SEL && dir > 0)
|
||||||
{
|
* {
|
||||||
/* while ((CUR_SEL)->states)
|
* edje_object_signal_emit(win->o_main, "e,state,object_selector_hide", "e");
|
||||||
* _evry_state_pop(CUR_SEL, 1); */
|
* _evry_selector_activate(SUBJ_SEL, (slide * SLIDE_LEFT));
|
||||||
|
* return 1;
|
||||||
edje_object_signal_emit(win->o_main, "e,state,object_selector_hide", "e");
|
* } */
|
||||||
_evry_selector_activate(SUBJ_SEL, (slide * SLIDE_LEFT));
|
|
||||||
}
|
|
||||||
else if (CUR_SEL == OBJ_SEL && dir < 0)
|
else if (CUR_SEL == OBJ_SEL && dir < 0)
|
||||||
{
|
{
|
||||||
_evry_selector_activate(ACTN_SEL, (slide * SLIDE_RIGHT));
|
_evry_selector_activate(ACTN_SEL, (slide * SLIDE_RIGHT));
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static int
|
||||||
_evry_selectors_switch(int dir)
|
_evry_selectors_switch(int dir)
|
||||||
{
|
{
|
||||||
evry_selectors_switch(dir, 0);
|
return evry_selectors_switch(dir, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -2088,7 +2097,8 @@ _evry_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||||
!((ev->modifiers & ECORE_EVENT_MODIFIER_CTRL) ||
|
!((ev->modifiers & ECORE_EVENT_MODIFIER_CTRL) ||
|
||||||
(ev->modifiers & ECORE_EVENT_MODIFIER_SHIFT)))
|
(ev->modifiers & ECORE_EVENT_MODIFIER_SHIFT)))
|
||||||
{
|
{
|
||||||
_evry_selectors_switch(1);
|
if (!_evry_selectors_switch(1))
|
||||||
|
_evry_selectors_switch(0);
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2142,38 +2152,47 @@ _evry_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
|
||||||
}
|
}
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
/* let plugin intercept keypress */
|
if ((s->plugin && s->plugin->cb_key_down) &&
|
||||||
if (s->plugin && s->plugin->cb_key_down &&
|
(s->plugin->cb_key_down(s->plugin, ev)))
|
||||||
s->plugin->cb_key_down(s->plugin, ev))
|
{
|
||||||
goto end;
|
/* let plugin intercept keypress */
|
||||||
/* let view intercept keypress */
|
goto end;
|
||||||
|
}
|
||||||
else if (_evry_view_key_press(s, ev))
|
else if (_evry_view_key_press(s, ev))
|
||||||
goto end;
|
{
|
||||||
|
/* let view intercept keypress */
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
else if (!strcmp(ev->key, "Right"))
|
else if (!strcmp(ev->key, "Right"))
|
||||||
{
|
{
|
||||||
if (!evry_browse_item(sel->state->cur_item) &&
|
if (!evry_browse_item(sel->state->cur_item))
|
||||||
(sel != OBJ_SEL))
|
evry_selectors_switch(1, EINA_TRUE);
|
||||||
_evry_selectors_switch(1);
|
|
||||||
}
|
}
|
||||||
else if (!strcmp(ev->key, "Left"))
|
else if (!strcmp(ev->key, "Left"))
|
||||||
{
|
{
|
||||||
if (!evry_browse_back(sel))
|
if (!evry_browse_back(sel))
|
||||||
_evry_selectors_switch(-1);
|
evry_selectors_switch(-1, EINA_TRUE);
|
||||||
}
|
}
|
||||||
else if (!strcmp(ev->key, "Return"))
|
else if (!strcmp(ev->key, "Return"))
|
||||||
{
|
{
|
||||||
if (ev->modifiers & ECORE_EVENT_MODIFIER_SHIFT)
|
if (ev->modifiers & ECORE_EVENT_MODIFIER_SHIFT)
|
||||||
_evry_plugin_action(sel, 0);
|
{
|
||||||
|
_evry_plugin_action(sel, 0);
|
||||||
|
}
|
||||||
|
else if (s->cur_item && s->cur_item->browseable)
|
||||||
|
{
|
||||||
|
evry_browse_item(sel->state->cur_item);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
_evry_plugin_action(sel, 1);
|
{
|
||||||
|
_evry_plugin_action(sel, 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (!strcmp(ev->key, "BackSpace"))
|
else if (!strcmp(ev->key, "BackSpace"))
|
||||||
{
|
{
|
||||||
if (!_evry_backspace(sel))
|
if (!_evry_backspace(sel))
|
||||||
evry_browse_back(sel);
|
evry_browse_back(sel);
|
||||||
}
|
}
|
||||||
else if (_evry_view_key_press(s, ev))
|
|
||||||
goto end;
|
|
||||||
else if ((ev->compose && !(ev->modifiers & ECORE_EVENT_MODIFIER_ALT)))
|
else if ((ev->compose && !(ev->modifiers & ECORE_EVENT_MODIFIER_ALT)))
|
||||||
{
|
{
|
||||||
int len = strlen(s->inp);
|
int len = strlen(s->inp);
|
||||||
|
@ -2216,6 +2235,9 @@ _evry_backspace(Evry_Selector *sel)
|
||||||
else
|
else
|
||||||
s->input = s->inp;
|
s->input = s->inp;
|
||||||
|
|
||||||
|
if (pos == 0)
|
||||||
|
s->trigger_active = EINA_FALSE;
|
||||||
|
|
||||||
if ((pos == 0) || !isspace(val))
|
if ((pos == 0) || !isspace(val))
|
||||||
_evry_update(sel, 1);
|
_evry_update(sel, 1);
|
||||||
|
|
||||||
|
@ -2263,6 +2285,8 @@ _evry_cb_update_timer(void *data)
|
||||||
{
|
{
|
||||||
Evry_Selector *sel = data;
|
Evry_Selector *sel = data;
|
||||||
|
|
||||||
|
DBG("%s", sel->state->input);
|
||||||
|
|
||||||
_evry_matches_update(sel, 1);
|
_evry_matches_update(sel, 1);
|
||||||
_evry_selector_update(sel);
|
_evry_selector_update(sel);
|
||||||
_evry_list_win_update(sel->state);
|
_evry_list_win_update(sel->state);
|
||||||
|
@ -2288,6 +2312,7 @@ _evry_clear(Evry_Selector *sel)
|
||||||
{
|
{
|
||||||
s->inp[0] = 0;
|
s->inp[0] = 0;
|
||||||
s->input = s->inp;
|
s->input = s->inp;
|
||||||
|
s->trigger_active = EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
_evry_update(sel, 1);
|
_evry_update(sel, 1);
|
||||||
|
@ -2708,34 +2733,41 @@ _evry_matches_update(Evry_Selector *sel, int async)
|
||||||
s->changed = 1;
|
s->changed = 1;
|
||||||
s->request++;
|
s->request++;
|
||||||
|
|
||||||
|
if (sel->update_timer)
|
||||||
|
{
|
||||||
|
ecore_timer_del(sel->update_timer);
|
||||||
|
sel->update_timer = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (s->sel_items)
|
||||||
|
{
|
||||||
|
eina_list_free(s->sel_items);
|
||||||
|
s->sel_items = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (s->inp[0])
|
if (s->inp[0])
|
||||||
{
|
{
|
||||||
len_inp = strlen(s->inp);
|
len_inp = strlen(s->inp);
|
||||||
input = s->inp;
|
input = s->inp;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s->sel_items)
|
/* use current plugins */
|
||||||
eina_list_free(s->sel_items);
|
|
||||||
s->sel_items = NULL;
|
|
||||||
|
|
||||||
if ((!input || !s->trigger_active) &&
|
|
||||||
(!win->plugin_dedicated))
|
|
||||||
{
|
|
||||||
EINA_LIST_FREE(s->cur_plugins, p);
|
|
||||||
s->trigger_active = EINA_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (s->trigger_active)
|
if (s->trigger_active)
|
||||||
{
|
{
|
||||||
|
s->plugin_auto_selected = EINA_FALSE;
|
||||||
|
|
||||||
EINA_LIST_FOREACH(s->cur_plugins, l, p)
|
EINA_LIST_FOREACH(s->cur_plugins, l, p)
|
||||||
{
|
{
|
||||||
p->request = s->request;
|
p->request = s->request;
|
||||||
p->fetch(p, s->input);
|
p->fetch(p, s->input);
|
||||||
}
|
}
|
||||||
|
goto found;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EINA_LIST_FREE(s->cur_plugins, p);
|
||||||
|
|
||||||
/* check if input matches plugin trigger */
|
/* check if input matches plugin trigger */
|
||||||
if (!s->cur_plugins && input)
|
if (input)
|
||||||
{
|
{
|
||||||
int len_trigger = 0;
|
int len_trigger = 0;
|
||||||
|
|
||||||
|
@ -2765,7 +2797,7 @@ _evry_matches_update(Evry_Selector *sel, int async)
|
||||||
/* replace trigger with indicator */
|
/* replace trigger with indicator */
|
||||||
if (len_trigger > 1)
|
if (len_trigger > 1)
|
||||||
{
|
{
|
||||||
s->inp[0] = '>';
|
s->inp[0] = ':';
|
||||||
|
|
||||||
if (s->inp + len_trigger)
|
if (s->inp + len_trigger)
|
||||||
strcpy(s->inp + 1, s->inp + len_trigger);
|
strcpy(s->inp + 1, s->inp + len_trigger);
|
||||||
|
@ -2774,44 +2806,45 @@ _evry_matches_update(Evry_Selector *sel, int async)
|
||||||
}
|
}
|
||||||
s->input = s->inp + 1;
|
s->input = s->inp + 1;
|
||||||
_evry_update_text_label(s);
|
_evry_update_text_label(s);
|
||||||
|
|
||||||
|
goto found;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!s->cur_plugins)
|
/* query all other plugins for this state */
|
||||||
|
EINA_LIST_FOREACH(s->plugins, l, p)
|
||||||
{
|
{
|
||||||
EINA_LIST_FOREACH(s->plugins, l, p)
|
if (!sel->states->next)
|
||||||
{
|
{
|
||||||
if (!sel->states->next)
|
/* skip plugins in toplevel which trigger-only */
|
||||||
{
|
if ((sel == SUBJ_SEL) &&
|
||||||
/* skip plugins in toplevel which trigger-only */
|
(p->config->top_level) &&
|
||||||
if ((sel == SUBJ_SEL) &&
|
(p->config->trigger) &&
|
||||||
(p->config->top_level) &&
|
(p->config->trigger_only))
|
||||||
(p->config->trigger) &&
|
continue;
|
||||||
(p->config->trigger_only))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
/* skip non-toplevel plugins when input < min_query */
|
/* skip non-toplevel plugins when input < min_query */
|
||||||
if ((!p->config->top_level) &&
|
if ((!p->config->top_level) &&
|
||||||
(p->config->min_query > len_inp))
|
(p->config->min_query > len_inp))
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* dont wait for async plugin. use their current items */
|
/* dont wait for async plugin. use their current items */
|
||||||
if (!async && p->async_fetch && p->items)
|
if (!async && p->async_fetch && p->items)
|
||||||
{
|
{
|
||||||
s->cur_plugins = eina_list_append(s->cur_plugins, p);
|
s->cur_plugins = eina_list_append(s->cur_plugins, p);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
p->request = s->request;
|
p->request = s->request;
|
||||||
|
|
||||||
if ((p->fetch(p, input)) || (sel->states->next))
|
if ((p->fetch(p, input)) || (sel->states->next))
|
||||||
{
|
{
|
||||||
s->cur_plugins = eina_list_append(s->cur_plugins, p);
|
s->cur_plugins = eina_list_append(s->cur_plugins, p);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
found:
|
||||||
_evry_aggregator_fetch(sel, input);
|
_evry_aggregator_fetch(sel, input);
|
||||||
|
|
||||||
if (s->plugin_auto_selected ||
|
if (s->plugin_auto_selected ||
|
||||||
|
@ -2820,12 +2853,6 @@ _evry_matches_update(Evry_Selector *sel, int async)
|
||||||
else
|
else
|
||||||
_evry_plugin_select(s, s->plugin);
|
_evry_plugin_select(s, s->plugin);
|
||||||
|
|
||||||
if (sel->update_timer)
|
|
||||||
{
|
|
||||||
ecore_timer_del(sel->update_timer);
|
|
||||||
sel->update_timer = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (s->plugin)
|
if (s->plugin)
|
||||||
{
|
{
|
||||||
EINA_LIST_FOREACH(s->plugin->items, l, it)
|
EINA_LIST_FOREACH(s->plugin->items, l, it)
|
||||||
|
|
|
@ -104,7 +104,7 @@ _fetch(Evry_Plugin *plugin, const char *input)
|
||||||
pp = eina_list_data_get(items);
|
pp = eina_list_data_get(items);
|
||||||
eina_list_free(items);
|
eina_list_free(items);
|
||||||
items = NULL;
|
items = NULL;
|
||||||
|
|
||||||
EINA_LIST_FOREACH(pp->items, l, it)
|
EINA_LIST_FOREACH(pp->items, l, it)
|
||||||
{
|
{
|
||||||
if (it->usage >= 0)
|
if (it->usage >= 0)
|
||||||
|
|
Loading…
Reference in New Issue