fix segv in border - file prop work
authorCarsten Haitzler <raster@rasterman.com>
Wed, 10 Jan 2007 16:32:29 +0000 (16:32 +0000)
committerCarsten Haitzler <raster@rasterman.com>
Wed, 10 Jan 2007 16:32:29 +0000 (16:32 +0000)
SVN revision: 27894

src/bin/e_border.c
src/bin/e_fm_prop.c
src/bin/e_widget_entry.h

index 2582d83..8945fab 100644 (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)))
          {
index 32f58b7..5a9282a 100644 (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
 
 
 
index 6d2cf2e..4992116 100644 (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