fix segv and fixme related to fm properites dialog
SVN revision: 29810
This commit is contained in:
parent
b1e8f3cc20
commit
668ca67d16
|
@ -122,6 +122,7 @@ struct _E_Fm2_Icon
|
|||
int saved_rel;
|
||||
E_Menu *menu;
|
||||
E_Entry_Dialog *entry_dialog;
|
||||
E_Config_Dialog *prop_dialog;
|
||||
E_Dialog *dialog;
|
||||
|
||||
E_Fm2_Icon_Info info;
|
||||
|
@ -261,6 +262,7 @@ static void _e_fm2_file_rename_delete_cb(void *obj);
|
|||
static void _e_fm2_file_rename_yes_cb(char *text, void *data);
|
||||
static void _e_fm2_file_rename_no_cb(void *data);
|
||||
static void _e_fm2_file_properties(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_fm2_file_properties_delete_cb(void *obj);
|
||||
static void _e_fm2_file_delete(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_fm2_file_delete_delete_cb(void *obj);
|
||||
static void _e_fm2_file_delete_yes_cb(void *data, E_Dialog *dialog);
|
||||
|
@ -1162,6 +1164,13 @@ e_fm2_icon_get(Evas *evas, const char *realpath,
|
|||
return oic;
|
||||
}
|
||||
|
||||
EAPI E_Fm2_Icon_Info *
|
||||
e_fm2_icon_file_info_get(E_Fm2_Icon *ic)
|
||||
{
|
||||
if (!ic) return NULL;
|
||||
return &(ic->info);
|
||||
}
|
||||
|
||||
/* FIXME: tmp delay - fix later */
|
||||
static int
|
||||
_e_fm2_cb_spawn_timer(void *data)
|
||||
|
@ -2452,6 +2461,11 @@ _e_fm2_icon_free(E_Fm2_Icon *ic)
|
|||
e_object_del(E_OBJECT(ic->entry_dialog));
|
||||
ic->entry_dialog = NULL;
|
||||
}
|
||||
if (ic->prop_dialog)
|
||||
{
|
||||
e_object_del(E_OBJECT(ic->prop_dialog));
|
||||
ic->prop_dialog = NULL;
|
||||
}
|
||||
if (ic->info.file) evas_stringshare_del(ic->info.file);
|
||||
if (ic->info.mime) evas_stringshare_del(ic->info.mime);
|
||||
if (ic->info.label) evas_stringshare_del(ic->info.label);
|
||||
|
@ -5108,8 +5122,19 @@ _e_fm2_file_properties(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
con = e_container_current_get(man);
|
||||
if (!con) return;
|
||||
|
||||
/* FIXME: get and store properties dialog into icon */
|
||||
e_fm_prop_file(con, &(ic->info));
|
||||
if (ic->prop_dialog) e_object_del(E_OBJECT(ic->prop_dialog));
|
||||
ic->prop_dialog = e_fm_prop_file(con, ic);
|
||||
E_OBJECT(ic->prop_dialog)->data = ic;
|
||||
e_object_del_attach_func_set(E_OBJECT(ic->prop_dialog), _e_fm2_file_properties_delete_cb);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_fm2_file_properties_delete_cb(void *obj)
|
||||
{
|
||||
E_Fm2_Icon *ic;
|
||||
|
||||
ic = E_OBJECT(obj)->data;
|
||||
ic->prop_dialog = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -191,7 +191,8 @@ EAPI Evas_Object *
|
|||
const char *keyhint,
|
||||
void (*gen_func) (void *data, Evas_Object *obj, void *event_info),
|
||||
void *data, int force_gen, const char **type_ret);
|
||||
|
||||
EAPI E_Fm2_Icon_Info *e_fm2_icon_file_info_get(E_Fm2_Icon *ic);
|
||||
|
||||
EAPI void e_fm2_client_data(Ecore_Ipc_Event_Client_Data *e);
|
||||
EAPI void e_fm2_client_del(Ecore_Ipc_Event_Client_Del *e);
|
||||
|
||||
|
|
|
@ -52,6 +52,7 @@ static void _cb_preview_update(void *data, Evas_Object *obj, void *event_info);
|
|||
/* Actual config data we will be playing with whil the dialog is active */
|
||||
struct _E_Config_Dialog_Data
|
||||
{
|
||||
E_Fm2_Icon *ic;
|
||||
E_Fm2_Icon_Info *fi;
|
||||
struct {
|
||||
Evas_Object *icon_wid;
|
||||
|
@ -79,7 +80,7 @@ struct _E_Config_Dialog_Data
|
|||
|
||||
/* a nice easy setup function that does the dirty work */
|
||||
EAPI E_Config_Dialog *
|
||||
e_fm_prop_file(E_Container *con, E_Fm2_Icon_Info *fi)
|
||||
e_fm_prop_file(E_Container *con, E_Fm2_Icon *ic)
|
||||
{
|
||||
E_Config_Dialog *cfd;
|
||||
E_Config_Dialog_View *v;
|
||||
|
@ -99,27 +100,28 @@ e_fm_prop_file(E_Container *con, E_Fm2_Icon_Info *fi)
|
|||
cfd = e_config_dialog_new(con,
|
||||
_("File Properties"),
|
||||
"E", "_fm_prop",
|
||||
"enlightenment/file_properties", 0, v, fi);
|
||||
"enlightenment/file_properties", 0, v, ic);
|
||||
return cfd;
|
||||
}
|
||||
|
||||
/**--CREATE--**/
|
||||
static void
|
||||
_fill_data(E_Config_Dialog_Data *cfdata, E_Fm2_Icon_Info *fi)
|
||||
_fill_data(E_Config_Dialog_Data *cfdata, E_Fm2_Icon *ic)
|
||||
{
|
||||
struct passwd *pw;
|
||||
|
||||
cfdata->fi = fi;
|
||||
if (fi->file) cfdata->file = strdup(fi->file);
|
||||
cfdata->size = e_util_size_string_get(fi->statinfo.st_size);
|
||||
cfdata->mod_date = e_util_file_time_get(fi->statinfo.st_mtime);
|
||||
if (fi->mime) cfdata->mime = strdup(fi->mime);
|
||||
pw = getpwuid(fi->statinfo.st_uid);
|
||||
cfdata->ic = ic;
|
||||
cfdata->fi = e_fm2_icon_file_info_get(ic);
|
||||
if (cfdata->fi->file) cfdata->file = strdup(cfdata->fi->file);
|
||||
cfdata->size = e_util_size_string_get(cfdata->fi->statinfo.st_size);
|
||||
cfdata->mod_date = e_util_file_time_get(cfdata->fi->statinfo.st_mtime);
|
||||
if (cfdata->fi->mime) cfdata->mime = strdup(cfdata->fi->mime);
|
||||
pw = getpwuid(cfdata->fi->statinfo.st_uid);
|
||||
if (pw) cfdata->owner = strdup(pw->pw_name);
|
||||
if (fi->statinfo.st_mode & S_IRUSR) cfdata->owner_read = 1;
|
||||
if (fi->statinfo.st_mode & S_IWUSR) cfdata->owner_write = 1;
|
||||
if (fi->statinfo.st_mode & S_IROTH) cfdata->others_read = 1;
|
||||
if (fi->statinfo.st_mode & S_IWOTH) cfdata->others_write = 1;
|
||||
if (cfdata->fi->statinfo.st_mode & S_IRUSR) cfdata->owner_read = 1;
|
||||
if (cfdata->fi->statinfo.st_mode & S_IWUSR) cfdata->owner_write = 1;
|
||||
if (cfdata->fi->statinfo.st_mode & S_IROTH) cfdata->others_read = 1;
|
||||
if (cfdata->fi->statinfo.st_mode & S_IWOTH) cfdata->others_write = 1;
|
||||
}
|
||||
|
||||
static void *
|
||||
|
@ -317,7 +319,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
ob = e_widget_button_add(evas, "", NULL, _cb_icon_sel, cfdata, cfd);
|
||||
cfdata->gui.icon_wid = ob;
|
||||
oi = e_fm2_icon_get(evas, e_fm2_real_path_get(cfdata->fi->fm),
|
||||
NULL, cfdata->fi,
|
||||
cfdata->ic, cfdata->fi,
|
||||
cfg->icon.key_hint,
|
||||
NULL, NULL, 0, &itype);
|
||||
e_widget_button_icon_set(ob, oi);
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#ifndef E_FM_PROP_H
|
||||
#define E_FM_PROP_H
|
||||
|
||||
EAPI E_Config_Dialog *e_fm_prop_file(E_Container *con, E_Fm2_Icon_Info *fi);
|
||||
EAPI E_Config_Dialog *e_fm_prop_file(E_Container *con, E_Fm2_Icon *ic);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue