diff --git a/src/modules/everything/e_mod_main.c b/src/modules/everything/e_mod_main.c index ee569efc3..dcf3de9e7 100644 --- a/src/modules/everything/e_mod_main.c +++ b/src/modules/everything/e_mod_main.c @@ -140,7 +140,7 @@ e_modapi_init(E_Module *m) NULL, "preferences-extensions"); e_configure_registry_item_add("extensions/run_everything", 40, - _("Run Everything"), + _("Everything Configuration"), NULL, "system-run", evry_config_dialog); evry_init(); diff --git a/src/modules/everything/evry_plug_aggregator.c b/src/modules/everything/evry_plug_aggregator.c index 950ce2b73..9506be044 100644 --- a/src/modules/everything/evry_plug_aggregator.c +++ b/src/modules/everything/evry_plug_aggregator.c @@ -10,12 +10,6 @@ struct _Plugin Evry_Selector *selector; }; -/* inline static int - * _is_action(const Evry_Item *it) - * { - * return (it->plugin->name == action_selector); - * } */ - static int _cb_sort_recent(const void *data1, const void *data2) { @@ -47,9 +41,18 @@ _cb_sort_recent(const void *data1, const void *data2) return -1; if (it2->usage && !it1->usage) return 1; - - if (it1->plugin == it2->plugin) - return (it1->priority - it2->priority); + + if ((it1->plugin == it2->plugin) && + (it1->priority - it2->priority)) + { + return (it1->priority - it2->priority); + } + else if (it1->plugin->config->priority - + it2->plugin->config->priority) + { + return (it1->plugin->config->priority - + it2->plugin->config->priority); + } return strcmp(it1->label, it2->label); @@ -62,7 +65,6 @@ _cb_sort(const void *data1, const void *data2) const Evry_Item *it1 = data1; const Evry_Item *it2 = data2; - /* sort actions matching the subtype always before those matching type*/ if ((it1->type == EVRY_TYPE_ACTION) && (it2->type == EVRY_TYPE_ACTION)) { @@ -81,16 +83,24 @@ _cb_sort(const void *data1, const void *data2) } } + if (it1->fuzzy_match > 0 || it2->fuzzy_match > 0) + { + if (it2->fuzzy_match <= 0) + return -1; + + if (it1->fuzzy_match <= 0) + return 1; + + if (abs (it1->fuzzy_match - it2->fuzzy_match) > 5) + return (it1->fuzzy_match - it2->fuzzy_match); + } + if (it1->usage && it2->usage) return (it1->usage > it2->usage ? -1 : 1); if (it1->usage && !it2->usage) return -1; if (it2->usage && !it1->usage) return 1; - - if ((it1->plugin == it2->plugin) && - (it1->priority - it2->priority)) - return (it1->priority - it2->priority); if (it1->fuzzy_match > 0 || it2->fuzzy_match > 0) { @@ -104,9 +114,18 @@ _cb_sort(const void *data1, const void *data2) return (it1->fuzzy_match - it2->fuzzy_match); } - if (it1->plugin->config->priority - it2->plugin->config->priority) - return (it1->plugin->config->priority - it2->plugin->config->priority); - + if ((it1->plugin == it2->plugin) && + (it1->priority - it2->priority)) + { + return (it1->priority - it2->priority); + } + else if (it1->plugin->config->priority - + it2->plugin->config->priority) + { + return (it1->plugin->config->priority - + it2->plugin->config->priority); + } + return strcasecmp(it1->label, it2->label); } diff --git a/src/modules/everything/evry_util.c b/src/modules/everything/evry_util.c index b30700e92..69d784849 100644 --- a/src/modules/everything/evry_util.c +++ b/src/modules/everything/evry_util.c @@ -103,7 +103,8 @@ evry_fuzzy_match(const char *str, const char *match) last = 0; min = 1; first = 0; - + /* m_len = 0; */ + /* match current word of string against current match */ for (p = next; *next != 0; p++) { @@ -137,6 +138,8 @@ evry_fuzzy_match(const char *str, const char *match) else offset += 3; + /* m_len++; */ + if (offset <= m_len * 3) continue; } @@ -208,7 +211,7 @@ evry_fuzzy_match(const char *str, const char *match) if (sum > 0) { /* exact match ? */ - if (strlen(str) != m_len) + if (strcmp(match, str)) sum += 10; }