*Major clean up, but I'm not finished with it. Too tired to continue,
authorDavid Walter Seikel <onefang@gmail.com>
Mon, 25 Sep 2006 18:15:37 +0000 (18:15 +0000)
committerDavid Walter Seikel <onefang@gmail.com>
Mon, 25 Sep 2006 18:15:37 +0000 (18:15 +0000)
I'll finish this after a good nights sleep.  In particular, the border
menu "Create Icon" stuff needs some attention, it will likely loose it's
original icon.

*When you open up the fsel to select a new icon, the directory of the
current icon is shown, or the usual home directory if there is no
current icon file.

SVN revision: 26148

src/bin/e_eap_editor.c

index 6ac31aa..29149f6 100644 (file)
@@ -6,27 +6,10 @@
 struct _E_Config_Dialog_Data
 {
    E_App eap;
-   /*- BASIC -*/
-   char  *name;
    char  *exe;
-   /*- ADVANCED -*/
-   char  *generic;
-   char  *comment;
-   char  *wname;
-   char  *wclass;
-   char  *wtitle;
-   char  *wrole;
-   char  *itheme;
-   char  *icon;
-   char  *iclass;
-   char  *ipath;
+   int    icon_theme;
    int    startup_notify;
    int    wait_exit;
-   /*- common -*/
-   char  *image;
-   int    width;
-   int    height;
-   int    icon_theme;
    E_App_Edit *editor;
    Evas_Object *themed;
 };
@@ -34,7 +17,6 @@ struct _E_Config_Dialog_Data
 /* local subsystem functions */
 
 static void           _e_eap_edit_free(E_App_Edit *editor);
-static void           _e_eap_edit_fill_data(E_Config_Dialog_Data *cdfata);
 static void          *_e_eap_edit_create_data(E_Config_Dialog *cfd);
 static void           _e_eap_edit_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *data);
 static int            _e_eap_edit_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *data);
@@ -109,6 +91,7 @@ _e_eap_edit_free(E_App_Edit *editor)
      }
    if (editor->eap)
       {
+         /* This frees up the temp file created by the border menu "Create Icon". */
          if (editor->eap->tmpfile) ecore_file_unlink(editor->eap->image);
          editor->eap->tmpfile = 0;
          IFDEL(editor->eap->image);
@@ -124,43 +107,6 @@ _e_eap_edit_free(E_App_Edit *editor)
    e_object_del(E_OBJECT(editor));
 }
 
-static void
-_e_eap_edit_fill_data(E_Config_Dialog_Data *cfdata)
-{
-   char *exe;
-   /*- BASIC -*/
-   IFDUP(cfdata->editor->eap->name, cfdata->name);
-   IFDUP(cfdata->editor->eap->exe, cfdata->exe);
-   exe = ecore_desktop_merge_command((char *)cfdata->editor->eap->exe, (char *)cfdata->editor->eap->exe_params);
-   if (exe)
-      cfdata->exe = exe;
-   /*- ADVANCED -*/
-   IFDUP(cfdata->editor->eap->generic, cfdata->generic);
-   IFDUP(cfdata->editor->eap->comment, cfdata->comment);
-   IFDUP(cfdata->editor->eap->win_name, cfdata->wname);
-   IFDUP(cfdata->editor->eap->win_class, cfdata->wclass);
-   IFDUP(cfdata->editor->eap->win_title, cfdata->wtitle);
-   IFDUP(cfdata->editor->eap->win_role, cfdata->wrole);
-   IFDUP(cfdata->editor->eap->icon_theme, cfdata->itheme);
-   IFDUP(cfdata->editor->eap->icon, cfdata->icon);
-   IFDUP(cfdata->editor->eap->icon_class, cfdata->iclass);
-   IFDUP(cfdata->editor->eap->icon_path, cfdata->ipath);
-   cfdata->startup_notify = cfdata->editor->eap->startup_notify;
-   cfdata->wait_exit = cfdata->editor->eap->wait_exit;
-   /*- COMMON -*/
-   IFDUP(cfdata->editor->eap->image, cfdata->image);
-   cfdata->height = cfdata->editor->eap->height;
-   cfdata->width = cfdata->editor->eap->width;
-
-   IFADD(cfdata->editor->eap->path, cfdata->eap.path);
-   IFADD(cfdata->editor->eap->icon_theme, cfdata->eap.icon_theme);
-   IFADD(cfdata->editor->eap->icon, cfdata->eap.icon);
-   IFADD(cfdata->editor->eap->icon_class, cfdata->eap.icon_class);
-   IFADD(cfdata->editor->eap->icon_path, cfdata->eap.icon_path);
-   if (!cfdata->eap.icon_path)
-      cfdata->icon_theme = 1;
-}
-
 static void *
 _e_eap_edit_create_data(E_Config_Dialog *cfd)
 {
@@ -169,88 +115,122 @@ _e_eap_edit_create_data(E_Config_Dialog *cfd)
    cfdata = E_NEW(E_Config_Dialog_Data, 1);
    if (!cfdata) return NULL;
    cfdata->editor = cfd->data;
-   cfdata->image = NULL;
-   _e_eap_edit_fill_data(cfdata);
+   /*- COMMON -*/
+   IFADD(cfdata->editor->eap->path, cfdata->eap.path);
+   IFADD(cfdata->editor->eap->name, cfdata->eap.name);
+   IFADD(cfdata->editor->eap->exe, cfdata->eap.exe);
+   IFADD(cfdata->editor->eap->exe_params, cfdata->eap.exe_params);
+   cfdata->exe = ecore_desktop_merge_command((char *)cfdata->editor->eap->exe, (char *)cfdata->editor->eap->exe_params);
+   IFADD(cfdata->editor->eap->image, cfdata->eap.image);
+   cfdata->eap.height = cfdata->editor->eap->height;
+   cfdata->eap.width = cfdata->editor->eap->width;
+   IFADD(cfdata->editor->eap->icon_theme, cfdata->eap.icon_theme);
+   IFADD(cfdata->editor->eap->icon, cfdata->eap.icon);
+   IFADD(cfdata->editor->eap->icon_class, cfdata->eap.icon_class);
+   IFADD(cfdata->editor->eap->icon_path, cfdata->eap.icon_path);
+   /*- ADVANCED -*/
+   IFADD(cfdata->editor->eap->generic, cfdata->eap.generic);
+   IFADD(cfdata->editor->eap->comment, cfdata->eap.comment);
+   IFADD(cfdata->editor->eap->win_name, cfdata->eap.win_name);
+   IFADD(cfdata->editor->eap->win_class, cfdata->eap.win_class);
+   IFADD(cfdata->editor->eap->win_title, cfdata->eap.win_title);
+   IFADD(cfdata->editor->eap->win_role, cfdata->eap.win_role);
+   cfdata->startup_notify = cfdata->editor->eap->startup_notify;
+   cfdata->wait_exit = cfdata->editor->eap->wait_exit;
+
+   if (!cfdata->eap.icon_path)
+     {
+        IFADD(cfdata->eap.image, cfdata->eap.icon_path);
+        if (!cfdata->eap.icon_path)
+           cfdata->icon_theme = 1;
+     }
    return cfdata;
 }
 
 static void
-_e_eap_edit_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *data)
+_e_eap_edit_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
 {
-   IFFREE(data->name);
-   IFFREE(data->exe);
-   IFFREE(data->generic);
-   IFFREE(data->comment);
-   IFFREE(data->wname);
-   IFFREE(data->wclass);
-   IFFREE(data->wtitle);
-   IFFREE(data->wrole);
-   IFFREE(data->itheme);
-   IFFREE(data->icon);
-   IFFREE(data->iclass);
-   IFFREE(data->ipath);
-   IFFREE(data->image);
-
-   IFDEL(data->eap.icon_class);
-   IFDEL(data->eap.icon);
-   IFDEL(data->eap.icon_theme);
-   IFDEL(data->eap.icon_path);
-   
-   if (data->editor)
+   IFDEL(cfdata->eap.path);
+   IFDEL(cfdata->eap.name);
+   IFDEL(cfdata->eap.exe);
+   IFDEL(cfdata->eap.exe_params);
+   IFFREE(cfdata->exe);
+   IFDEL(cfdata->eap.image);
+   IFDEL(cfdata->eap.icon_theme);
+   IFDEL(cfdata->eap.icon);
+   IFDEL(cfdata->eap.icon_class);
+   IFDEL(cfdata->eap.icon_path);
+   IFDEL(cfdata->eap.generic);
+   IFDEL(cfdata->eap.comment);
+   IFDEL(cfdata->eap.win_name);
+   IFDEL(cfdata->eap.win_class);
+   IFDEL(cfdata->eap.win_title);
+   IFDEL(cfdata->eap.win_role);
+
+   if (cfdata->editor)
      {
        E_Object *obj;
        
-       obj = E_OBJECT(data->editor);
-       data->editor = NULL;
+       obj = E_OBJECT(cfdata->editor);
+       cfdata->editor = NULL;
        e_object_del(obj);
      }
 
-   free(data);
+   free(cfdata);
 }
 
 static int
-_e_eap_edit_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *data)
+_e_eap_edit_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
 {
    E_App_Edit *editor;
    E_App *eap;
 
-   editor = data->editor;
+   editor = cfdata->editor;
    eap = editor->eap;
 
-   IFDEL(eap->name);
-   IFDEL(eap->exe);
-   IFDEL(eap->exe_params);
-   IFDEL(eap->image);
-
-   IFADD(data->name, eap->name);
-   IFADD(data->itheme, eap->icon_theme);
-   IFADD(data->iclass, eap->icon_class);
-   IFADD(data->icon, eap->icon);
-   IFADD(data->eap.icon_path, eap->icon_path);
-   IFADD(data->eap.icon, eap->icon);
-   if (data->exe)
+   e_app_fields_empty(eap);
+
+   IFADD(cfdata->eap.path, eap->path);
+   IFADD(cfdata->eap.name, eap->name);
+   if (cfdata->exe)
       {
          char *exe;
 
-         exe = strchr(data->exe, ' ');
+         exe = strchr(cfdata->exe, ' ');
         if (exe)
            {
               *exe = '\0';
                eap->exe_params = evas_stringshare_add(++exe);
               *exe = ' ';
            }
-         eap->exe = evas_stringshare_add(data->exe);
+         eap->exe = evas_stringshare_add(cfdata->exe);
       }
-
-   eap->startup_notify = data->startup_notify;
-   eap->wait_exit = data->wait_exit;
+/* FIXME: eap->image was created by the border menu "Create Icon" and it's the
+ * path to a temporary file.  This was fine for .eaps' as the file got saved 
+ * into the .eap.  For .desktops, we need to copy this file inte ~/.e/e/icons 
+ * and find a decent name for it.
+ */
+//   IFADD(cfdata->eap.image, eap->image);
+   IFADD(cfdata->eap.icon_theme, eap->icon_theme);
+   IFADD(cfdata->eap.icon, eap->icon);
+   IFADD(cfdata->eap.icon_class, eap->icon_class);
+   IFADD(cfdata->eap.icon_path, eap->icon_path);
 
    /* FIXME: hardcoded until the eap editor provides fields to change it */
-   if (data->width) eap->width = data->width;
+   if (cfdata->eap.width) eap->width = cfdata->eap.width;
    else eap->width = 128;
-   if (data->height) eap->height = data->height;
+   if (cfdata->eap.height) eap->height = cfdata->eap.height;
    else eap->height = 128;
 
+   IFADD(cfdata->eap.generic, eap->generic);
+   IFADD(cfdata->eap.comment, eap->comment);
+   IFADD(cfdata->eap.win_name, eap->win_name);
+   IFADD(cfdata->eap.win_class, eap->win_class);
+   IFADD(cfdata->eap.win_title, eap->win_title);
+   IFADD(cfdata->eap.win_role, eap->win_role);
+   eap->startup_notify = cfdata->startup_notify;
+   eap->wait_exit = cfdata->wait_exit;
+
    if ((eap->name) && (eap->exe))
       e_app_fields_save(eap);
 
@@ -258,38 +238,21 @@ _e_eap_edit_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *data)
 }
 
 static int
-_e_eap_edit_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *data)
+_e_eap_edit_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
 {
-   E_App_Edit *editor;
-   E_App *eap;
-
-   editor = data->editor;
-   eap = editor->eap;
-
-   e_app_fields_empty(eap);
-
-   IFADD(data->generic, eap->generic);
-   IFADD(data->comment, eap->comment);
-   IFADD(data->wname, eap->win_name);
-   IFADD(data->wclass, eap->win_class);
-   IFADD(data->wtitle, eap->win_title);
-   IFADD(data->wrole, eap->win_role);
-
-   _e_eap_edit_basic_apply_data(cfd, data);
-
-   return 1;
+   return _e_eap_edit_basic_apply_data(cfd, cfdata);
 }
 
 
 static Evas_Object *
-_e_eap_edit_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *data)
+_e_eap_edit_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
 {
    E_App_Edit *editor;
    E_App *eap;
    Evas_Object *ol, *o;
    Evas_Object *entry;
 
-   editor = data->editor;
+   editor = cfdata->editor;
    editor->evas = evas;
    eap = editor->eap;
 
@@ -303,33 +266,25 @@ _e_eap_edit_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dial
        editor->img = NULL;
      }
    
-   editor->img = e_app_icon_add(evas, &(data->eap));
+   editor->img = e_app_icon_add(evas, &(cfdata->eap));
 
    if (editor->img_widget) evas_object_del(editor->img_widget);
    editor->img_widget = e_widget_button_add(evas, "", NULL,
-                                           _e_eap_editor_cb_icon_select, data, editor);
+                                           _e_eap_editor_cb_icon_select, cfdata, editor);
    e_widget_button_icon_set(editor->img_widget, editor->img);
    e_widget_min_size_set(editor->img_widget, 48, 48);
    e_widget_frametable_object_append(o, editor->img_widget,
                                     0, 0, 1, 1,
                                     1, 1, 1, 1);
 
-   data->themed = e_widget_check_add(evas, _("Use Icon Theme"), &(data->icon_theme));
-   evas_object_smart_callback_add(data->themed, "changed",
-                                 _cb_files_icon_theme_changed, data);
-   e_widget_frametable_object_append(o, data->themed,
-                                    1, 0, 1, 1,
-                                    1, 1, 1, 1);
-
    e_widget_table_object_append(ol, o, 0, 0, 1, 1, 1 ,1, 1, 1);
 
-
    o = e_widget_frametable_add(evas, _("Basic Info"), 0);
-   e_widget_frametable_object_append(o, e_widget_label_add(evas, _("App name")),
+   e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Name")),
                                     0, 0, 1, 1,
                                     1, 1, 1, 1);
 
-   entry = e_widget_entry_add(evas, &(data->name));
+   entry = e_widget_entry_add(evas, (char **) &(cfdata->eap.name));
    e_widget_min_size_set(entry, 100, 1);
    e_widget_frametable_object_append(o, entry,
                                     1, 0, 1, 1,
@@ -337,7 +292,7 @@ _e_eap_edit_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dial
    e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Executable")),
                                     0, 1, 1, 1,
                                     1, 1, 1, 1);
-   e_widget_frametable_object_append(o, e_widget_entry_add(evas, &(data->exe)),
+   e_widget_frametable_object_append(o, e_widget_entry_add(evas, &(cfdata->exe)),
                                     1, 1, 1, 1,
                                     1, 1, 1, 1);
    e_widget_table_object_append(ol, o, 1, 0, 1, 1, 1 ,1, 1, 1);
@@ -346,17 +301,17 @@ _e_eap_edit_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dial
 }
 
 static Evas_Object *
-_e_eap_edit_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *data)
+_e_eap_edit_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
 {
    E_App_Edit *editor;
    E_App *eap;
    Evas_Object *ol, *o;
    Evas_Object *entry;
 
-   editor = data->editor;
+   editor = cfdata->editor;
    eap = editor->eap;
 
-   ol = _e_eap_edit_basic_create_widgets(cfd, evas, data);
+   ol = _e_eap_edit_basic_create_widgets(cfd, evas, cfdata);
 
    o = e_widget_frametable_add(evas, _("General"), 0);
 
@@ -365,7 +320,7 @@ _e_eap_edit_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_D
                                     0, 0, 1, 1,
                                     1, 1, 1, 1);
 
-   entry = e_widget_entry_add(evas, &(data->generic));
+   entry = e_widget_entry_add(evas, (char **) &(cfdata->eap.generic));
    e_widget_min_size_set(entry, 100, 1);
    e_widget_frametable_object_append(o, entry,
                                     1, 0, 1, 1,
@@ -373,7 +328,7 @@ _e_eap_edit_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_D
    e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Comment")),
                                     0, 1, 1, 1,
                                     1, 1, 1, 1);
-   e_widget_frametable_object_append(o, e_widget_entry_add(evas, &(data->comment)),
+   e_widget_frametable_object_append(o, e_widget_entry_add(evas, (char **) &(cfdata->eap.comment)),
                                     1, 1, 1, 1,
                                     1, 1, 1, 1);
    e_widget_table_object_append(ol, o, 0, 1, 1, 1, 1 ,1, 1, 1);
@@ -386,7 +341,7 @@ _e_eap_edit_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_D
                                     0, 0, 1, 1,
                                     1, 1, 1, 1);
 
-   entry = e_widget_entry_add(evas, &(data->wname));
+   entry = e_widget_entry_add(evas, (char **) &(cfdata->eap.win_name));
    e_widget_min_size_set(entry, 100, 1);
    e_widget_frametable_object_append(o, entry,
                                     1, 0, 1, 1,
@@ -394,19 +349,19 @@ _e_eap_edit_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_D
    e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Window Class")),
                                     0, 1, 1, 1,
                                     1, 1, 1, 1);
-   e_widget_frametable_object_append(o, e_widget_entry_add(evas, &(data->wclass)),
+   e_widget_frametable_object_append(o, e_widget_entry_add(evas, (char **) &(cfdata->eap.win_class)),
                                     1, 1, 1, 1,
                                     1, 1, 1, 1);
    e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Window Title")),
                                     0, 2, 1, 1,
                                     1, 1, 1, 1);
-   e_widget_frametable_object_append(o, e_widget_entry_add(evas, &(data->wtitle)),
+   e_widget_frametable_object_append(o, e_widget_entry_add(evas, (char **) &(cfdata->eap.win_title)),
                                     1, 2, 1, 1,
                                     1, 1, 1, 1);
    e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Window Role")),
                                     0, 3, 1, 1,
                                     1, 1, 1, 1);
-   e_widget_frametable_object_append(o, e_widget_entry_add(evas, &(data->wrole)),
+   e_widget_frametable_object_append(o, e_widget_entry_add(evas, (char **) &(cfdata->eap.win_role)),
                                     1, 3, 1, 1,
                                     1, 1, 1, 1);
    e_widget_table_object_append(ol, o, 0, 2, 1, 1, 1 ,1, 1, 1);
@@ -414,14 +369,21 @@ _e_eap_edit_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_D
    /*- icon info -*/
    o = e_widget_frametable_add(evas, _("Icon Theme"), 0);
 
+   cfdata->themed = e_widget_check_add(evas, _("Use Icon Theme"), &(cfdata->icon_theme));
+   evas_object_smart_callback_add(cfdata->themed, "changed",
+                                 _cb_files_icon_theme_changed, cfdata);
+   e_widget_frametable_object_append(o, cfdata->themed,
+                                    1, 0, 1, 1,
+                                    1, 1, 1, 1);
+
    e_widget_frametable_object_append(o, e_widget_label_add(evas, _("Icon Class")),
-                                    0, 0, 1, 1,
+                                    0, 1, 1, 1,
                                     1, 1, 1, 1);
 
-   entry = e_widget_entry_add(evas, &(data->iclass));
+   entry = e_widget_entry_add(evas, (char **) &(cfdata->eap.icon_class));
    e_widget_min_size_set(entry, 100, 1);
    e_widget_frametable_object_append(o, entry,
-                                    1, 0, 1, 1,
+                                    1, 1, 1, 1,
                                     1, 1, 1, 1);
 
    e_widget_table_object_append(ol, o, 1, 1, 1, 1, 1 ,1, 1, 1);
@@ -429,10 +391,10 @@ _e_eap_edit_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_D
 
    /*- misc info -*/
    o = e_widget_frametable_add(evas, _("Misc"), 0);
-   e_widget_frametable_object_append(o, e_widget_check_add(evas, _("Startup Notify"), &(data->startup_notify)),
+   e_widget_frametable_object_append(o, e_widget_check_add(evas, _("Startup Notify"), &(cfdata->startup_notify)),
                                     0, 0, 1, 1,
                                     1, 1, 1, 1);
-   e_widget_frametable_object_append(o, e_widget_check_add(evas, _("Wait Exit"), &(data->wait_exit)),
+   e_widget_frametable_object_append(o, e_widget_check_add(evas, _("Wait Exit"), &(cfdata->wait_exit)),
                                     0, 1, 1, 1,
                                     1, 1, 1, 1);
    e_widget_table_object_append(ol, o, 1, 2, 1, 1, 1 ,1, 1, 1);
@@ -449,6 +411,7 @@ _e_eap_editor_cb_icon_select(void *data1, void *data2)
    Evas_Object *o;
    Evas_Coord mw, mh;
    E_App_Edit *editor;
+   char *dir = NULL;
 
    editor = data2;
    cfdata = data1;
@@ -458,9 +421,21 @@ _e_eap_editor_cb_icon_select(void *data1, void *data2)
    dia->data = cfdata;
    e_object_del_attach_func_set(E_OBJECT(dia), _e_eap_edit_cb_icon_select_del);
 
-   o = e_widget_fsel_add(dia->win->evas, "~/", "/", NULL, NULL,
-                        _e_eap_edit_select_cb, cfdata,
-                        _e_eap_edit_change_cb, cfdata, 1);
+   if (cfdata->eap.icon_path)
+      dir = ecore_file_get_dir(cfdata->eap.icon_path);
+   if (dir)
+     {
+        o = e_widget_fsel_add(dia->win->evas, dir, "/", NULL, NULL,
+                             _e_eap_edit_select_cb, cfdata,
+                             _e_eap_edit_change_cb, cfdata, 1);
+       free(dir);
+     }
+   else
+     {
+        o = e_widget_fsel_add(dia->win->evas, "~/", "/", NULL, NULL,
+                             _e_eap_edit_select_cb, cfdata,
+                             _e_eap_edit_change_cb, cfdata, 1);
+     }
    evas_object_show(o);
    editor->fsel = o;
    e_widget_min_size_get(o, &mw, &mh);
@@ -494,8 +469,8 @@ _e_eap_edit_change_cb(void *data, Evas_Object *obj)
    file = e_widget_fsel_selection_path_get(obj);
    if (!file) return;
 
-   IFFREE(cfdata->image);
-   IFDUP(file, cfdata->image);
+   IFDEL(cfdata->eap.image);
+   IFADD(file, cfdata->eap.image);
 }
 
 static void
@@ -515,7 +490,7 @@ _e_eap_edit_cb_icon_select_ok(void *data, E_Dialog *dia)
    E_Config_Dialog_Data *cfdata;
 
    cfdata = data;
-   if (cfdata->image)
+   if (cfdata->eap.image)
      {
         e_widget_check_checked_set(cfdata->themed, 0);
         _cb_files_icon_theme_changed(cfdata, NULL, NULL);
@@ -544,7 +519,7 @@ _cb_files_icon_theme_changed(void *data, Evas_Object *obj, void *event_info)
    IFDEL(cfdata->eap.icon_path);
    if (!cfdata->icon_theme)
       {
-         IFADD(cfdata->image, cfdata->eap.icon_path);
+         IFADD(cfdata->eap.image, cfdata->eap.icon_path);
       }
    if (cfdata->editor->img) evas_object_del(cfdata->editor->img);
    cfdata->editor->img = e_app_icon_add(cfdata->editor->evas, &(cfdata->eap));