fix segv in border - file prop work

SVN revision: 27894
This commit is contained in:
Carsten Haitzler 2007-01-10 16:32:29 +00:00
parent f3bcbd7b9b
commit 30c446194e
3 changed files with 32 additions and 5 deletions

View File

@ -5470,7 +5470,8 @@ _e_border_eval(E_Border *bd)
if (rem->prop.border)
{
if (bd->bordername) evas_stringshare_del(bd->bordername);
bd->bordername = evas_stringshare_add(rem->prop.border);
if (rem->prop.border) bd->bordername = evas_stringshare_add(rem->prop.border);
else bd->bordername = NULL;
bd->client.border.changed = 1;
}
}
@ -5557,6 +5558,7 @@ _e_border_eval(E_Border *bd)
bordername = "skipped";
else
bordername = e_config->theme_default_border_style;
if (!bordername) bordername = "default";
if ((!bd->client.border.name) || (strcmp(bd->client.border.name, bordername)))
{

View File

@ -87,8 +87,8 @@ e_fm_prop_file(E_Container *con, E_Fm2_Icon_Info *fi)
v->free_cfdata = _free_data;
v->basic.apply_cfdata = _basic_apply_data;
v->basic.create_widgets = _basic_create_widgets;
v->advanced.apply_cfdata = _advanced_apply_data;
v->advanced.create_widgets = _advanced_create_widgets;
// v->advanced.apply_cfdata = _advanced_apply_data;
// v->advanced.create_widgets = _advanced_create_widgets;
/* create config diaolg for NULL object/data */
cfd = e_config_dialog_new(con,
_("File Properties"),
@ -146,14 +146,38 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
static int
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
char buf[4096];
int fperm = 0;
if (((fi->statinfo.st_mode & S_IRUSR) && (cfdata->owner_read)) ||
((!fi->statinfo.st_mode & S_IRUSR) && (!cfdata->owner_read)))
fperm = 1;
if (((fi->statinfo.st_mode & S_IWUSR) && (cfdata->owner_write)) ||
((!fi->statinfo.st_mode & S_IWUSR) && (!cfdata->owner_write)))
fperm = 1;
if (((fi->statinfo.st_mode & S_IROTH) && (cfdata->others_read)) ||
((!fi->statinfo.st_mode & S_IROTH) && (!cfdata->others_read)))
fperm = 1;
if (((fi->statinfo.st_mode & S_IWOTH) && (cfdata->others_write)) ||
((!fi->statinfo.st_mode & S_IWOTH) && (!cfdata->others_write)))
fperm = 1;
snprintf(buf, sizeof(buf), "%s/%s",
e_fm2_real_path_get(cfdata->fi->fm), cfdata->fi->file);
if (fperm)
{
/* FIXME: modify st_mode */
chmod(buf, fi->statinfo.st_mode);
}
return 1; /* Apply was OK */
}
#if 0
static int
_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
return 1; /* Apply was OK */
}
#endif
/**--GUI--**/
static Evas_Object *
@ -288,6 +312,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
return o;
}
#if 0
static Evas_Object *
_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{
@ -297,7 +322,7 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
o = e_widget_table_add(evas, 0);
return o;
}
#endif

View File

@ -11,7 +11,7 @@ EAPI void e_widget_entry_text_set (Evas_Object *entry, const
EAPI const char *e_widget_entry_text_get (Evas_Object *entry);
EAPI void e_widget_entry_clear (Evas_Object *entry);
EAPI void e_widget_entry_password_set (Evas_Object *entry, int password_mode);
EAPI void e_widget_entry_readonly_set (Evas_Object *entry, int readonly_mode);
EAPI void e_widget_entry_readonly_set (Evas_Object *entry, int readonly_mode);
EAPI Evas_Object *e_widget_entry_editable_object_get (Evas_Object *entry);
#endif