From a355fc0dfac7f8f3a46b29fcaf695715c903741c Mon Sep 17 00:00:00 2001 From: Hannes Janetzek Date: Fri, 30 Apr 2010 12:41:10 +0000 Subject: [PATCH] show open-with actions only for files. SVN revision: 48466 --- src/modules/everything-apps/e_mod_main.c | 44 +++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/src/modules/everything-apps/e_mod_main.c b/src/modules/everything-apps/e_mod_main.c index 73c6452..1230082 100644 --- a/src/modules/everything-apps/e_mod_main.c +++ b/src/modules/everything-apps/e_mod_main.c @@ -69,24 +69,33 @@ _begin_open_with(Evry_Plugin *plugin, const Evry_Item *item) { GET_PLUGIN(p, plugin); + Efreet_Desktop *d, *d2; const char *mime; - - if (!CHECK_TYPE(item, EVRY_TYPE_FILE)) - /* && !CHECK_SUBTYPE(item, EVRY_TYPE_FILE)) */ - return 0; + const char *path; - GET_FILE(file, item); - Efreet_Desktop *d, *d2; + if (CHECK_TYPE(item, EVRY_TYPE_ACTION)) + { + GET_ACTION(act, item); + GET_FILE(file, act->it1.item); - if (!evry_file_path_get(file)) - return NULL; + if (!evry_file_path_get(file)) + return NULL; - if (!file->mime) - mime = efreet_mime_type_get(file->path); - else - mime = file->mime; + path = file->path; + mime = file->mime; + } + else if (CHECK_TYPE(item, EVRY_TYPE_FILE)) + { + GET_FILE(file, item); - if (!mime) + if (!evry_file_path_get(file)) + return NULL; + + path = file->path; + mime = file->mime; + } + + if (!mime && !(mime = efreet_mime_type_get(path))) return NULL; p->apps_mime = efreet_util_desktop_mime_list(mime); @@ -160,6 +169,9 @@ _finish(Evry_Plugin *plugin) EINA_LIST_FREE(p->apps_hist, desktop) efreet_desktop_free(desktop); + EINA_LIST_FREE(p->apps_mime, desktop) + efreet_desktop_free(desktop); + if (_conf->list_executables) { if (exe_dir) @@ -666,6 +678,9 @@ _fetch(Evry_Plugin *plugin, const char *input) /* add executables */ _add_executables(p, input); + if (!input) + _add_desktop_list(p, p->apps_mime, input); + /* FIXME update last used from exehist */ /* EINA_LIST_FOREACH(e_exehist_list_get(), l, file) * { @@ -936,7 +951,7 @@ _plugins_init(void) plug_apps = p; p = EVRY_PLUGIN_NEW(Plugin, N_("Applications"), NULL, EVRY_TYPE_APP, - _begin, _finish, _fetch, NULL); + _begin_open_with, _finish, _fetch, NULL); p->complete = &_complete; p->config_path = "extensions/everything-apps"; evry_plugin_register(p, EVRY_PLUGIN_OBJECT, 1); @@ -944,7 +959,6 @@ _plugins_init(void) p = EVRY_PLUGIN_NEW(Plugin, N_("Open With..."), NULL, EVRY_TYPE_APP, _begin_open_with, _finish_mime, _fetch_mime, NULL); - p->config_path = "extensions/everything-apps"; evry_plugin_register(p, EVRY_PLUGIN_ACTION, 1); plug_action = p; -- 2.7.4