forked from enlightenment/enlightenment
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:
parent
27c4cf72d2
commit
1e52c5a5ae
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue