diff --git a/src/modules/everything/Evry.h b/src/modules/everything/Evry.h index 57942e631..f7bdf7830 100644 --- a/src/modules/everything/Evry.h +++ b/src/modules/everything/Evry.h @@ -199,6 +199,9 @@ struct _Evry_Plugin /* optional: use this when you extend the plugin struct */ void (*free) (Evry_Plugin *p); + /* return an object to be embedded in list view */ + /* Evas_Object *(*info_get) (Evry_Plugin *p, Evas *e); */ + /* show in aggregator */ /* default TRUE */ Eina_Bool aggregate; diff --git a/src/modules/everything/evry_plug_aggregator.c b/src/modules/everything/evry_plug_aggregator.c index 4404b33c2..0f3eb553a 100644 --- a/src/modules/everything/evry_plug_aggregator.c +++ b/src/modules/everything/evry_plug_aggregator.c @@ -112,7 +112,7 @@ _fetch(Evry_Plugin *plugin, const char *input) Plugin *p = (Plugin *) plugin; Evry_Plugin *pp; Evry_State *s; - Eina_List *l, *ll, *lll, *lp; + Eina_List *l, *ll, *lll, *lp = NULL; Evry_Item *it, *it2; int i, cnt = 0; Eina_List *items = NULL; @@ -137,28 +137,25 @@ _fetch(Evry_Plugin *plugin, const char *input) } } - /* skip aggregator */ - if (eina_list_data_find_list(s->cur_plugins, plugin)) - lp = s->cur_plugins->next; - else - lp = s->cur_plugins; - - if (lp && lp->data && lp->data == plugin) - lp = s->cur_plugins->next; + /* filter all to be shown in aggregator */ + EINA_LIST_FOREACH(s->cur_plugins, l, pp) + { + if (!pp->aggregate || pp == plugin) continue; + lp = eina_list_append(lp, pp); + } + if (!lp) return 0; + /* if there is only one plugin append all items */ - if ((lp) && (!lp->next)) + if (!lp->next) { pp = lp->data; - - if (pp->aggregate); + + EINA_LIST_FOREACH(pp->items, l, it) { - EINA_LIST_FOREACH(pp->items, l, it) - { - evry_history_item_usage_set(p->selector->history, it, input, context); - it->fuzzy_match = evry_fuzzy_match(it->label, input); - items = _add_item(p, items, it); - } + evry_history_item_usage_set(p->selector->history, it, input, context); + it->fuzzy_match = evry_fuzzy_match(it->label, input); + items = _add_item(p, items, it); } } /* if there is input append all items that match or have @@ -167,8 +164,6 @@ _fetch(Evry_Plugin *plugin, const char *input) { EINA_LIST_FOREACH(lp, l, pp) { - if (!pp->aggregate) continue; - EINA_LIST_FOREACH(pp->items, ll, it) { if (it->fuzzy_match == 0) @@ -189,17 +184,11 @@ _fetch(Evry_Plugin *plugin, const char *input) { EINA_LIST_FOREACH(lp, l, pp) { - if (!pp->aggregate) continue; - cnt = 0; EINA_LIST_FOREACH(pp->items, ll, it) { - if (cnt++ == MAX_ITEMS) break; - if (!eina_list_data_find_list(items, it)) - { - evry_history_item_usage_set(p->selector->history, it, NULL, context); - it->fuzzy_match = 0; - items = _add_item(p, items, it); - } + evry_history_item_usage_set(p->selector->history, it, NULL, context); + it->fuzzy_match = 0; + items = _add_item(p, items, it); } } } @@ -208,20 +197,30 @@ _fetch(Evry_Plugin *plugin, const char *input) { EINA_LIST_FOREACH(lp, l, pp) { - if (!pp->aggregate) continue; - EINA_LIST_FOREACH(pp->items, ll, it) { if (evry_history_item_usage_set(p->selector->history, it, input, context) && (!eina_list_data_find_list(items, it))) { items = _add_item(p, items, it); - continue; } } } } + if (eina_list_count(items) < MAX_ITEMS) + { + EINA_LIST_FOREACH(lp, l, pp) + { + EINA_LIST_FOREACH(pp->items, ll, it) + { + if (!eina_list_data_find_list(items, it)) + items = _add_item(p, items, it); + } + } + } + + if (items) eina_list_free(items); if (input) diff --git a/src/modules/everything/evry_plug_view_thumb.c b/src/modules/everything/evry_plug_view_thumb.c index 077ef1458..ac779a744 100644 --- a/src/modules/everything/evry_plug_view_thumb.c +++ b/src/modules/everything/evry_plug_view_thumb.c @@ -1167,7 +1167,8 @@ _cb_key_down(Evry_View *view, const Ecore_Event_Key *ev) return 1; } - if ((ev->modifiers & ECORE_EVENT_MODIFIER_SHIFT) && + if (((ev->modifiers & ECORE_EVENT_MODIFIER_SHIFT) || + (ev->modifiers & ECORE_EVENT_MODIFIER_CTRL)) && (!strcmp(ev->key, "Up"))) { if (!sd->items) goto end; @@ -1177,7 +1178,8 @@ _cb_key_down(Evry_View *view, const Ecore_Event_Key *ev) evry_item_select(s, it->item); goto end; } - else if ((ev->modifiers & ECORE_EVENT_MODIFIER_SHIFT) && + else if (((ev->modifiers & ECORE_EVENT_MODIFIER_SHIFT) || + (ev->modifiers & ECORE_EVENT_MODIFIER_CTRL)) && (!strcmp(ev->key, "Down"))) { if (!sd->items) goto end;