From e9bfb04e12c4a55a31d40fac510326e245868a63 Mon Sep 17 00:00:00 2001 From: Sebastian Dransfeld Date: Tue, 21 Dec 2010 09:26:43 +0000 Subject: [PATCH] copy backgrounds to e dir SVN revision: 55686 --- src/bin/e_bg.c | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/src/bin/e_bg.c b/src/bin/e_bg.c index 88f4f91c4..8e96eaee0 100644 --- a/src/bin/e_bg.c +++ b/src/bin/e_bg.c @@ -637,14 +637,48 @@ e_bg_handler_set(Evas_Object *obj __UNUSED__, const char *path, void *data __UNU if (_e_bg_file_edje_check(path)) { + char buf[PATH_MAX]; + int copy = 1; + E_Container *con = e_container_current_get(e_manager_current_get()); E_Zone *zone = e_zone_current_get(con); E_Desk *desk = e_desk_current_get(zone); - e_bg_add(con->num, zone->num, desk->x, desk->y, path); - e_bg_update(); - e_config_save_queue(); - return; + /* if not in system dir or user dir, copy to user dir */ + e_prefix_data_concat_static(buf, "data/backgrounds"); + if (!strncmp(buf, path, strlen(buf))) + copy = 0; + if (copy) + { + e_user_dir_concat_static(buf, "backgrounds"); + if (!strncmp(buf, path, strlen(buf))) + copy = 0; + } + if (copy) + { + const char *file; + char *name; + + file = ecore_file_file_get(path); + name = ecore_file_strip_ext(file); + + e_user_dir_snprintf(buf, sizeof(buf), "backgrounds/%s-%f.edj", name, ecore_time_unix_get()); + free(name); + + if (!ecore_file_exists(buf)) + { + ecore_file_cp(path, buf); + e_bg_add(con->num, zone->num, desk->x, desk->y, buf); + } + else + e_bg_add(con->num, zone->num, desk->x, desk->y, path); + } + else + e_bg_add(con->num, zone->num, desk->x, desk->y, path); + + e_bg_update(); + e_config_save_queue(); + return; } e_bg_image_import(path, _e_bg_handler_image_imported, NULL);