diff --git a/src/bin/e_apps.c b/src/bin/e_apps.c index 38c89fd6e..d2c38bc5e 100644 --- a/src/bin/e_apps.c +++ b/src/bin/e_apps.c @@ -1260,12 +1260,15 @@ e_app_fields_fill(E_App *a, const char *path) if (desktop->exec) a->exe = evas_stringshare_add(desktop->exec); if (desktop->exec_params) a->exe_params = evas_stringshare_add(desktop->exec_params); + if (desktop->icon) a->icon = evas_stringshare_add(desktop->icon); + if (desktop->icon_theme) a->icon_theme = evas_stringshare_add(desktop->icon_theme); if (desktop->icon_class) a->icon_class = evas_stringshare_add(desktop->icon_class); if (desktop->icon_path) a->icon_path = evas_stringshare_add(desktop->icon_path); if (desktop->window_name) a->win_name = evas_stringshare_add(desktop->window_name); if (desktop->window_class) a->win_class = evas_stringshare_add(desktop->window_class); if (desktop->window_title) a->win_title = evas_stringshare_add(desktop->window_title); if (desktop->window_role) a->win_role = evas_stringshare_add(desktop->window_role); + a->icon_time = desktop->icon_time; a->startup_notify = desktop->startup; a->wait_exit = desktop->wait_exit; @@ -1409,12 +1412,15 @@ e_app_fields_save(E_App *a) desktop->exec = (char *) a->exe; desktop->exec_params = (char *) a->exe_params; + desktop->icon = (char *) a->icon; + desktop->icon_theme = (char *) a->icon_theme; desktop->icon_class = (char *) a->icon_class; desktop->icon_path = (char *) a->icon_path; desktop->window_name = (char *) a->win_name; desktop->window_class = (char *) a->win_class; desktop->window_title = (char *) a->win_title; desktop->window_role = (char *) a->win_role; + desktop->icon_time = a->icon_time; desktop->startup = a->startup_notify; desktop->wait_exit = a->wait_exit; @@ -1584,6 +1590,8 @@ e_app_fields_empty(E_App *a) if (a->comment) evas_stringshare_del(a->comment); if (a->exe) evas_stringshare_del(a->exe); if (a->exe_params) evas_stringshare_del(a->exe_params); + if (a->icon_theme) evas_stringshare_del(a->icon_theme); + if (a->icon) evas_stringshare_del(a->icon); if (a->icon_class) evas_stringshare_del(a->icon_class); if (a->icon_path) evas_stringshare_del(a->icon_path); if (a->win_name) evas_stringshare_del(a->win_name); @@ -1596,6 +1604,8 @@ e_app_fields_empty(E_App *a) a->comment = NULL; a->exe = NULL; a->exe_params = NULL; + a->icon_theme = NULL; + a->icon = NULL; a->icon_class = NULL; a->icon_path = NULL; a->win_name = NULL; @@ -2396,10 +2406,13 @@ _e_app_copy(E_App *dst, E_App *src) dst->win_class = src->win_class; dst->win_title = src->win_title; dst->win_role = src->win_role; + dst->icon_theme = src->icon_theme; + dst->icon = src->icon; dst->icon_class = src->icon_class; dst->icon_path = src->icon_path; dst->startup_notify = src->startup_notify; dst->wait_exit = src->wait_exit; + dst->icon_time = src->icon_time; dst->starting = src->starting; dst->scanned = src->scanned; diff --git a/src/bin/e_apps.h b/src/bin/e_apps.h index 4e7d14306..9eda04fba 100644 --- a/src/bin/e_apps.h +++ b/src/bin/e_apps.h @@ -39,8 +39,7 @@ struct _E_App const char *exe; /* command to execute, NULL if directory */ const char *exe_params; /* command params to execute, NULL if directory */ - const char *path; /* path to .eet containing icons etc. etc. */ -// const char *icon_path; /* path to icon file, in case it is different from path. */ + const char *path; /* path to .desktop containing icons etc. etc. */ const char *win_name; /* window name */ const char *win_class; /* window class */ @@ -48,16 +47,19 @@ struct _E_App const char *win_role; /* window role */ const char *icon_class; /* icon_class */ - const char *icon_path; /* FDO icon path */ - + const char *icon_theme; /* FDO icon theme */ + const char *icon; /* FDO icon */ + const char *icon_path; /* icon path */ + time_t icon_time; /* For checking if the icon cache is valid. */ + Evas_List *subapps; /* if this a directory, a list of more E_App's */ - + Evas_List *instances; /* a list of all the exe handles for executions */ Evas_List *references; /* If this app is in a main repository, this would be a list to other eapp pointing to this */ Ecore_File_Monitor *monitor; /* Check for changes and files */ - + unsigned char startup_notify : 1; /* disable while starting etc. */ unsigned char wait_exit : 1; /* wait for app to exit before execing next */ unsigned char starting : 1; /* this app is starting */ @@ -68,7 +70,7 @@ struct _E_App /* Actually calling this st_mtime causes compile issues, must be some strange macros at work. */ time_t mtime; /* For checking if the cache is valid. */ - + /* used for eap edit */ const char *image; /* used when we're saving a image into the eap */ int width; /* used for saving eap's image width in edje */ diff --git a/src/bin/e_eap_editor.c b/src/bin/e_eap_editor.c index 79df69236..6ac31aa2b 100644 --- a/src/bin/e_eap_editor.c +++ b/src/bin/e_eap_editor.c @@ -16,6 +16,8 @@ struct _E_Config_Dialog_Data char *wclass; char *wtitle; char *wrole; + char *itheme; + char *icon; char *iclass; char *ipath; int startup_notify; @@ -139,6 +141,8 @@ _e_eap_edit_fill_data(E_Config_Dialog_Data *cfdata) 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; @@ -149,6 +153,8 @@ _e_eap_edit_fill_data(E_Config_Dialog_Data *cfdata) 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) @@ -179,11 +185,15 @@ _e_eap_edit_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *data) 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) @@ -213,8 +223,11 @@ _e_eap_edit_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *data) 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) { char *exe;