From ca798e4d05a7ca0f1411ab9fd878a346560b46b2 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 29 May 2013 15:04:46 +0100 Subject: [PATCH] fix e_exec to successfully open .desktop files which are URLs by using e_open --- ChangeLog | 1 + NEWS | 1 + src/bin/Makefile.am | 1 + src/bin/e_exec.c | 23 ++++++++++++++++++++--- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index bdc3516be..615e31424 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,7 @@ 2013-05-29 Mike Blumenkrantz * added dnd support for text/x-moz-url + * fixed e_exec to open .desktop url links 2013-05-24 Christopher Michael diff --git a/NEWS b/NEWS index 304c69983..039af8648 100644 --- a/NEWS +++ b/NEWS @@ -215,3 +215,4 @@ Fixes: * toolbar gadgets no longer crash when trying to display a popup * fixed theme bug which prevented windows from unshading correctly when animations were disabled * filemanager windows no longer resize to 0x0 when double clicked with no icons present + * fixed e_exec to open .desktop url links diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index 098f4393f..77173126e 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -16,6 +16,7 @@ AM_CPPFLAGS = \ @EMOTION_CFLAGS@ \ @WAYLAND_CFLAGS@ \ @WAYLAND_EGL_CFLAGS@ \ +-DE_BINDIR=\"$(bindir)\" \ -DPACKAGE_BIN_DIR=\"@PACKAGE_BIN_DIR@\" \ -DPACKAGE_LIB_DIR=\"@PACKAGE_LIB_DIR@\" \ -DPACKAGE_DATA_DIR=\"@PACKAGE_DATA_DIR@\" \ diff --git a/src/bin/e_exec.c b/src/bin/e_exec.c index 75fec649d..67eb92cc6 100644 --- a/src/bin/e_exec.c +++ b/src/bin/e_exec.c @@ -186,8 +186,13 @@ e_exec(E_Zone *zone, Efreet_Desktop *desktop, const char *exec, if (exec) inst = _e_exec_cb_exec(launch, NULL, strdup(exec), 0); else - inst = efreet_desktop_command_get - (desktop, files, (Efreet_Desktop_Command_Cb)_e_exec_cb_exec, launch); + { + if (desktop->exec) + inst = efreet_desktop_command_get(desktop, files, + (Efreet_Desktop_Command_Cb)_e_exec_cb_exec, launch); + else + inst = _e_exec_cb_exec(launch, desktop, NULL, 0); + } } else inst = _e_exec_cb_exec(launch, NULL, strdup(exec), 0); @@ -515,6 +520,18 @@ _e_exec_cb_exec(void *data, Efreet_Desktop *desktop, char *exec, int remaining) else exe = ecore_exe_run(exec, inst); } + else if (desktop && desktop->url) + { + Eina_Strbuf *sb; + + sb = eina_strbuf_new(); + eina_strbuf_append(sb, E_BINDIR "/enlightenment_open '"); + eina_strbuf_append(sb, desktop->url); + eina_strbuf_append_char(sb, '\''); + exe = ecore_exe_run(eina_strbuf_string_get(sb), + inst); + eina_strbuf_free(sb); + } else exe = ecore_exe_run(exec, inst); } @@ -557,7 +574,7 @@ _e_exec_cb_exec(void *data, Efreet_Desktop *desktop, char *exec, int remaining) lnew = eina_list_append(l, inst); if (l) eina_hash_modify(e_exec_instances, inst->key, lnew); else eina_hash_add(e_exec_instances, inst->key, lnew); - if (inst->desktop) + if (inst->desktop && inst->desktop->exec) { e_exec_start_pending = eina_list_append(e_exec_start_pending, inst->desktop);