Make sure the temporary icon created by the border menu is saved properly.
authorDavid Walter Seikel <onefang@gmail.com>
Tue, 26 Sep 2006 18:35:37 +0000 (18:35 +0000)
committerDavid Walter Seikel <onefang@gmail.com>
Tue, 26 Sep 2006 18:35:37 +0000 (18:35 +0000)
SVN revision: 26168

src/bin/e_eap_editor.c

index 6527b70..5c55f40 100644 (file)
@@ -227,25 +227,47 @@ _e_eap_edit_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
          eap->exe = evas_stringshare_add(cfdata->exec);
       }
 
+   IFADD(cfdata->eap.icon, eap->icon);
+   IFADD(cfdata->icon_class, eap->icon_class);
+   IFADD(cfdata->eap.icon_theme, eap->icon_theme);
    if (cfdata->icon_theme)
      {
         IFDEL(eap->icon_path);
+        IFDEL(eap->icon_theme);
      }
    else
      {
         IFADD(cfdata->icon_path, eap->icon_path);
-       if (cfdata->editor->eap->image)
+       /* Check if it's still the same old temporary image. */
+       if ((eap->icon_path) && (cfdata->editor->eap->image))
          {
+           if (strcmp(eap->icon_path, cfdata->editor->eap->image) == 0)
+             {
+                 IFDEL(eap->icon_path);
+             }
+         }
+       /* Move the temporary image to a proper place. */
+       if ((!eap->icon_path) && (cfdata->editor->eap->image))
+         {
+            char file[PATH_MAX];
+
 /* 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 
+ * 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 into ~/.e/e/icons 
- * and find a decent name for it.
+ * and find a decent name for it.  A decent name for it is whatever the icon 
+ * search algo will find quickly.  On the other hand, this goes into icon_path, 
+ * which is checked first.  The original temp name includes win_name and a time 
+ * stamp.
+ *
+ * I'm going to just copy the existing filename for now, and leave the issue of 
+ * a proper name until later.
  */
+             snprintf(file, PATH_MAX, "%s/.e/e/icons/%s", e_user_homedir_get(), ecore_file_get_file(cfdata->editor->eap->image));
+            ecore_file_mv(cfdata->editor->eap->image, file);
+             IFADD(file, eap->icon_path);
+             IFDEL(eap->icon_theme);
          }
      }
-   IFADD(cfdata->eap.icon_theme, eap->icon_theme);
-   IFADD(cfdata->eap.icon, eap->icon);
-   IFADD(cfdata->icon_class, eap->icon_class);
 
    /* FIXME: hardcoded until the eap editor provides fields to change it */
    if (cfdata->eap.width) eap->width = cfdata->eap.width;
@@ -542,7 +564,9 @@ _cb_files_icon_theme_changed(void *data, Evas_Object *obj, void *event_info)
    cfdata = data;
    IFFREE(cfdata->icon_path);
    if (!cfdata->icon_theme)
-      IFDUP(cfdata->image, cfdata->icon_path);
+     {
+        IFDUP(cfdata->image, cfdata->icon_path);
+     }
    _e_eap_editor_icon_show(cfdata);
    e_widget_button_icon_set(cfdata->editor->img_widget, cfdata->editor->img);
 }