This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch master
in repository enlightenment.

View the commit online.

commit bea94314bd77d9dcfe102f40c9648e4d6c284d04
Author: Carsten Haitzler <ras...@rasterman.com>
AuthorDate: Wed Jul 20 15:33:36 2022 +0100

    allow multiple mimes and actions on files in efm
---
 src/modules/fileman/e_fwin.c | 70 ++++++++++++++++++++++++++++----------------
 1 file changed, 45 insertions(+), 25 deletions(-)

diff --git a/src/modules/fileman/e_fwin.c b/src/modules/fileman/e_fwin.c
index 19c71aa35..e5619c2a0 100644
--- a/src/modules/fileman/e_fwin.c
+++ b/src/modules/fileman/e_fwin.c
@@ -272,55 +272,75 @@ static Eina_List *_e_fwin_mime_all_handlers_list = NULL;
 static int
 _e_fwin_cb_dir_mime_handler_test(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *path)
 {
-   if (ecore_file_is_dir(path)) return 1;
-   if (e_fm2_real_path_get(obj))
-     {
-        evas_object_data_set(obj, "fileman_terminal_realpath", (void*)1);
-        return 1;
-     }
+   const char *rp;
+
+   rp = e_fm2_real_path_get(obj);
+   if ((rp) && (!strcmp(path, rp))) return 1;
+   if (rp) return 1;
    return 0;
 }
 
 static void
-_e_fwin_cb_dir_mime_handler(void *data, Evas_Object *obj EINA_UNUSED, const char *path)
+_e_fwin_cb_dir_mime_handler(void *data, Evas_Object *obj, const char *path)
 {
    E_Fwin_Mime_Handler *h = data;
    Eina_Stringshare *rp;
    Eina_List *files = NULL;
+   const char *f;
 
    rp = e_fm2_real_path_get(obj);
-   if (rp && (rp != path) && (evas_object_data_del(obj, "fileman_terminal_realpath"))) //icon menu; use rp
-     path = rp;
-   files = eina_list_append(files, path);
+   if ((rp) && (rp == path) &&
+       (!evas_object_data_del(obj, "fileman_terminal_realpath")))
+     {
+        files = eina_list_append(files, eina_stringshare_add(rp));
+     }
+   else
+     {
+        Eina_List *selected;
+        E_Fm2_Icon_Info *ici;
+
+        selected = e_fm2_selected_list_get(obj);
+        EINA_LIST_FREE(selected, ici)
+          {
+             files = eina_list_append(files, eina_stringshare_add(ici->file));
+          }
+     }
+
    e_exec(e_zone_current_get(), h->desktop, NULL, files, "fileman");
-   eina_list_free(files);
+   EINA_LIST_FREE(files, f) eina_stringshare_del(f);
 }
 
 static void
 _e_fwin_mime_all_handlers_fill(void)
 {
    E_Fwin_Mime_Handler *h;
-   Eina_List *desktops;
+   Eina_List *desktops, *mimes;
    Efreet_Desktop *desktop;
 
    desktops = efreet_util_desktop_name_glob_list("*");
    EINA_LIST_FREE(desktops, desktop)
      {
-        const char *mime = eina_hash_find
+        const char *m, *mime = eina_hash_find
           (desktop->x, "X-Enlightenment-Action-Mime");
         if (!mime) continue;
-        h = calloc(1, sizeof(E_Fwin_Mime_Handler));
-        if (!h) continue;
-        h->mime = eina_stringshare_add(mime);
-        h->desktop = desktop;
-        efreet_desktop_ref(desktop);
-        h->handler = e_fm2_mime_handler_new
-          (desktop->name, desktop->icon,
-           _e_fwin_cb_dir_mime_handler, h,
-           _e_fwin_cb_dir_mime_handler_test, h);
-        e_fm2_mime_handler_mime_add(h->handler, h->mime);
-        _e_fwin_mime_all_handlers_list =
-          eina_list_append(_e_fwin_mime_all_handlers_list, h);
+
+        mimes = efreet_desktop_string_list_parse(mime);
+        EINA_LIST_FREE(mimes, m)
+          {
+             h = calloc(1, sizeof(E_Fwin_Mime_Handler));
+             if (!h) continue;
+             h->mime = eina_stringshare_add(m);
+             h->desktop = desktop;
+             efreet_desktop_ref(desktop);
+             h->handler = e_fm2_mime_handler_new
+               (desktop->name, desktop->icon,
+                _e_fwin_cb_dir_mime_handler, h,
+                _e_fwin_cb_dir_mime_handler_test, h);
+             e_fm2_mime_handler_mime_add(h->handler, h->mime);
+             _e_fwin_mime_all_handlers_list =
+               eina_list_append(_e_fwin_mime_all_handlers_list, h);
+             eina_stringshare_del(m);
+          }
      }
 }
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to