From 90517199bcaa9bdb9fa7d91700eb28b0ca3acc12 Mon Sep 17 00:00:00 2001 From: Hannes Janetzek Date: Mon, 19 Apr 2010 07:26:56 +0000 Subject: [PATCH] 'everything' fix bug in sorting of 'all' list. - added 'subtype' to Evry_Item SVN revision: 48125 --- src/modules/everything-files/e_mod_main.c | 12 ++++++++---- src/modules/everything/Evry.h | 5 ++++- src/modules/everything/evry.c | 2 +- src/modules/everything/evry_plug_aggregator.c | 14 ++++++++++---- src/modules/everything/evry_plug_view_thumb.c | 2 +- src/modules/everything/evry_view_plugin_tabs.c | 1 - 6 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/modules/everything-files/e_mod_main.c b/src/modules/everything-files/e_mod_main.c index 01eeaa2b3..a88ddb95e 100644 --- a/src/modules/everything-files/e_mod_main.c +++ b/src/modules/everything-files/e_mod_main.c @@ -255,8 +255,8 @@ _scan_end_func(void *data) evry_util_file_detail_set(file); if (cnt >= MAX_ITEMS) continue; - cnt += _append_file(p, file); + item->priority = cnt; } if (d->files) p->thread = ecore_thread_run(_scan_func, _scan_end_func, _scan_cancel_func, d); @@ -264,6 +264,7 @@ _scan_end_func(void *data) E_FREE(d); EVRY_PLUGIN_ITEMS_SORT(p, _cb_sort); + evry_plugin_async_update(EVRY_PLUGIN(p), EVRY_ASYNC_UPDATE_ADD); } @@ -487,11 +488,14 @@ _fetch(Evry_Plugin *plugin, const char *input) else p->input = eina_stringshare_add(input); } - + EINA_LIST_FOREACH(p->files, l, file) { - if (cnt >= MAX_ITEMS); - cnt += _append_file(p, file); + if (cnt <= MAX_ITEMS) + { + cnt += _append_file(p, file); + EVRY_ITEM(file)->priority = cnt; + } } if (!EVRY_PLUGIN(p)->items) diff --git a/src/modules/everything/Evry.h b/src/modules/everything/Evry.h index 2f65de71b..59e4001a6 100644 --- a/src/modules/everything/Evry.h +++ b/src/modules/everything/Evry.h @@ -3,7 +3,7 @@ #include "e.h" -#define EVRY_API_VERSION 3 +#define EVRY_API_VERSION 4 #define EVRY_ACTION_OTHER 0 #define EVRY_ACTION_FINISHED 1 @@ -136,6 +136,9 @@ struct _Evry_Item * was performed on a file with a specific mimetype */ const char *context; + /* optional */ + const char *subtype; + /* do not set by plugin! */ Evry_Item *next; Eina_Bool selected; diff --git a/src/modules/everything/evry.c b/src/modules/everything/evry.c index 1312daeb1..aa0fb40c1 100644 --- a/src/modules/everything/evry.c +++ b/src/modules/everything/evry.c @@ -309,7 +309,7 @@ evry_item_new(Evry_Item *base, Evry_Plugin *p, const char *label, void (*cb_free it->free = cb_free; it->ref = 1; - it->usage = -1; + /* it->usage = -1; */ #ifdef CHECK_REFS item_cnt++; diff --git a/src/modules/everything/evry_plug_aggregator.c b/src/modules/everything/evry_plug_aggregator.c index 93af95f50..3988fceb0 100644 --- a/src/modules/everything/evry_plug_aggregator.c +++ b/src/modules/everything/evry_plug_aggregator.c @@ -41,7 +41,12 @@ _cb_sort_recent(const void *data1, const void *data2) (it2->plugin->config->priority + it2->priority)); } - return -1; + if (it1->plugin == it2->plugin) + return (it1->priority - it2->priority); + + return strcmp(it1->label, it2->label); + + return 1; } static int @@ -72,7 +77,7 @@ _cb_sort(const void *data1, const void *data2) if ((it1->plugin == it2->plugin) && (it1->priority - it2->priority)) return (it1->priority - it2->priority); - + if (it1->fuzzy_match || it2->fuzzy_match) { if (it1->fuzzy_match && !it2->fuzzy_match) @@ -88,8 +93,8 @@ _cb_sort(const void *data1, const void *data2) if (it1->plugin->config->priority - it2->plugin->config->priority) return (it1->plugin->config->priority - it2->plugin->config->priority); - if (it1->priority - it2->priority) - return (it1->priority - it2->priority); + /* if (it1->priority - it2->priority) + * return (it1->priority - it2->priority); */ return strcasecmp(it1->label, it2->label); } @@ -138,6 +143,7 @@ _fetch(Evry_Plugin *plugin, const char *input) * if (!plugin->changed) * return 1; */ /* printf("aggreator changed\n"); */ + EVRY_PLUGIN_ITEMS_FREE(p); diff --git a/src/modules/everything/evry_plug_view_thumb.c b/src/modules/everything/evry_plug_view_thumb.c index 4f75694a9..d7b28c643 100644 --- a/src/modules/everything/evry_plug_view_thumb.c +++ b/src/modules/everything/evry_plug_view_thumb.c @@ -717,7 +717,7 @@ _pan_item_select(Evas_Object *obj, Item *it, int scroll) { double now = ecore_time_get(); - if (now - sd->last_select < 0.05 && sd->sel_pos == sd->sel_pos_to) + if (now - sd->last_select < 0.1 && sd->sel_pos == sd->sel_pos_to) { sd->scroll_align = sd->scroll_align_to; diff --git a/src/modules/everything/evry_view_plugin_tabs.c b/src/modules/everything/evry_view_plugin_tabs.c index f07579c6e..bcebee2b5 100644 --- a/src/modules/everything/evry_view_plugin_tabs.c +++ b/src/modules/everything/evry_view_plugin_tabs.c @@ -115,7 +115,6 @@ _tabs_update(Tab_View *v) v->timer = ecore_timer_add(0.1, _timer_cb, v); return; } - printf("width %d\n", w); /* remove tabs for not active plugins */ e_box_freeze(v->o_tabs);