1. handle chdir errors gracefully with error disply

2. on error DONT KEEP STRIPPING PATH TO EMPTY!



SVN revision: 59773
This commit is contained in:
Carsten Haitzler 2011-05-29 05:09:50 +00:00
parent 27c4cf72d2
commit 1e52c5a5ae
2 changed files with 49 additions and 11 deletions

View File

@ -203,7 +203,6 @@ _e_exec_cb_exec(void *data, Efreet_Desktop *desktop, char *exec, int remaining)
// need a way to still inherit from parent env of wm.
e_util_env_set("__GL_SYNC_TO_VBLANK", NULL);
e_util_library_path_strip();
//// FIXME: seem to be some issues with the pipe and filling up ram - need to
//// check. for now disable.
// exe = ecore_exe_pipe_run(exec,
@ -212,17 +211,44 @@ _e_exec_cb_exec(void *data, Efreet_Desktop *desktop, char *exec, int remaining)
// inst);
if ((desktop) && (desktop->path))
{
if (!getcwd(buf, sizeof(buf))) return NULL;
if (chdir(desktop->path)) return NULL;
if (!getcwd(buf, sizeof(buf)))
{
E_FREE(inst);
e_util_dialog_show(_("Run Error"),
_("Enlightenment was unable to get current directory"));
return NULL;
}
if (chdir(desktop->path))
{
E_FREE(inst);
e_util_dialog_show(_("Run Error"),
_("Enlightenment was unable to change to directory:<br>"
"<br>"
"%s"),
buf);
return NULL;
}
e_util_library_path_strip();
exe = ecore_exe_run(exec, inst);
if (chdir(buf)) return NULL;
e_util_library_path_restore();
if (chdir(buf))
{
e_util_dialog_show(_("Run Error"),
_("Enlightenment was unable to restore to directory:<br>"
"<br>"
"%s"),
buf);
E_FREE(inst);
return NULL;
}
}
else
{
e_util_library_path_strip();
exe = ecore_exe_run(exec, inst);
e_util_library_path_restore();
}
e_util_library_path_restore();
if (penv_display)
{
e_util_env_set("DISPLAY", penv_display);
@ -234,7 +260,7 @@ _e_exec_cb_exec(void *data, Efreet_Desktop *desktop, char *exec, int remaining)
e_util_dialog_show(_("Run Error"),
_("Enlightenment was unable to fork a child process:<br>"
"<br>"
"%s<br>"),
"%s"),
exec);
return NULL;
}

View File

@ -26,7 +26,7 @@ typedef struct _Instance Instance;
struct _Instance
{
E_Gadcon_Client *gcc;
Evas_Object *o_clock, *o_cal;
Evas_Object *o_clock, *o_table, *o_popclock, *o_cal;
E_Gadcon_Popup *popup;
};
@ -36,13 +36,25 @@ static void
_clock_popup_new(Instance *inst)
{
Evas *evas;
Evas_Object *o, *oi;
if (inst->popup) return;
inst->popup = e_gadcon_popup_new(inst->gcc);
evas = inst->popup->win->evas;
inst->o_cal = e_widget_table_add(evas, 0);
e_widget_size_min_set(inst->o_cal, 100, 100);
e_gadcon_popup_content_set(inst->popup, inst->o_cal);
inst->o_table = e_widget_table_add(evas, 0);
oi = edje_object_add(evas);
inst->o_popclock = oi;
e_theme_edje_object_set(oi, "base/theme/modules/clock",
"e/modules/clock/main");
o = e_widget_image_add_from_object(evas, oi, 128, 128);
evas_object_show(oi);
e_widget_table_object_align_append(inst->o_table, o,
0, 0, 1, 1, 0, 0, 0, 0, 0.5, 0.5);
e_gadcon_popup_content_set(inst->popup, inst->o_table);
e_gadcon_popup_show(inst->popup);
}