From 70769c03ef73ce347c5dd305d9c9cebecbfdf7d0 Mon Sep 17 00:00:00 2001 From: Christopher Michael Date: Mon, 13 Nov 2006 21:08:54 +0000 Subject: [PATCH] Be sure to close the mime_edit dialog if the main mime_list dialog closes. SVN revision: 27092 --- src/bin/e_int_config_mime.c | 22 +++++++++++++++++++++- src/bin/e_int_config_mime.h | 2 +- src/bin/e_int_config_mime_edit.c | 21 +++++++++++++-------- src/bin/e_int_config_mime_edit.h | 2 +- 4 files changed, 36 insertions(+), 11 deletions(-) diff --git a/src/bin/e_int_config_mime.c b/src/bin/e_int_config_mime.c index 1572b394d..85aeb21a2 100644 --- a/src/bin/e_int_config_mime.c +++ b/src/bin/e_int_config_mime.c @@ -25,6 +25,7 @@ struct _E_Config_Dialog_Data { Evas_Object *tlist, *list; } gui; + E_Config_Dialog *cfd, *edit_dlg; }; static void *_create_data (E_Config_Dialog *cfd); @@ -60,6 +61,17 @@ e_int_config_mime(E_Container *con) return cfd; } +EAPI void +e_int_config_mime_edit_done(void *data) +{ + E_Config_Dialog_Data *cfdata; + + cfdata = data; + if (!cfdata) return; + if (cfdata->edit_dlg) + cfdata->edit_dlg = NULL; +} + static void _fill_data(E_Config_Dialog_Data *cfdata) { @@ -94,6 +106,7 @@ _create_data(E_Config_Dialog *cfd) E_Config_Dialog_Data *cfdata; cfdata = E_NEW(E_Config_Dialog_Data, 1); + cfdata->cfd = cfd; _fill_data(cfdata); return cfdata; } @@ -101,6 +114,12 @@ _create_data(E_Config_Dialog *cfd) static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { + if (cfdata->edit_dlg) + { + e_object_del(E_OBJECT(cfdata->edit_dlg)); + cfdata->edit_dlg = NULL; + } + while (types) { Config_Type *t; @@ -432,6 +451,7 @@ _cb_config(void *data, void *data2) Evas_List *l; E_Config_Dialog_Data *cfdata; E_Config_Mime_Icon *mi = NULL; + E_Config_Dialog *edit_dlg; char *m; int found = 0; @@ -455,5 +475,5 @@ _cb_config(void *data, void *data2) mi->mime = evas_stringshare_add(m); } - e_int_config_mime_edit(mi); + cfdata->edit_dlg = e_int_config_mime_edit(mi, cfdata); } diff --git a/src/bin/e_int_config_mime.h b/src/bin/e_int_config_mime.h index af2c117e4..3d4e95140 100644 --- a/src/bin/e_int_config_mime.h +++ b/src/bin/e_int_config_mime.h @@ -3,8 +3,8 @@ #ifndef E_INT_CONFIG_MIME_H #define E_INT_CONFIG_MIME_H - EAPI E_Config_Dialog *e_int_config_mime(E_Container *con); +EAPI void e_int_config_mime_edit_done(void *data); #endif #endif diff --git a/src/bin/e_int_config_mime_edit.c b/src/bin/e_int_config_mime_edit.c index d185fd7a8..95a5b53ed 100644 --- a/src/bin/e_int_config_mime_edit.c +++ b/src/bin/e_int_config_mime_edit.c @@ -36,17 +36,24 @@ struct _E_Config_Dialog_Data Evas_Object *icon_wid, *fsel_wid; E_Dialog *fsel; } gui; + E_Config_Mime_Icon *data; + void *data2; }; #define IFDUP(src, dst) if (src) dst = strdup(src); else dst = NULL; #define IFFREE(src) if (src) free(src); src = NULL; EAPI E_Config_Dialog * -e_int_config_mime_edit(E_Config_Mime_Icon *data) +e_int_config_mime_edit(E_Config_Mime_Icon *data, void *data2) { E_Config_Dialog *cfd; E_Config_Dialog_View *v; E_Container *con; + E_Config_Dialog_Data *cfdata; + + cfdata = E_NEW(E_Config_Dialog_Data, 1); + cfdata->data = data; + cfdata->data2 = data2; if (e_config_dialog_find("E", "_config_mime_edit_dialog")) return NULL; @@ -60,18 +67,15 @@ e_int_config_mime_edit(E_Config_Mime_Icon *data) cfd = e_config_dialog_new(con, _("Mime Settings"), "E", "_config_mime_edit_dialog", "enlightenment/e", - 0, v, data); + 0, v, cfdata); return cfd; } static void * _create_data(E_Config_Dialog *cfd) { - E_Config_Dialog_Data *cfdata; - - cfdata = E_NEW(E_Config_Dialog_Data, 1); - _fill_data(cfd, cfdata); - return cfdata; + _fill_data(cfd, cfd->data); + return cfd->data; } static void @@ -79,7 +83,7 @@ _fill_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { E_Config_Mime_Icon *mi; - mi = (E_Config_Mime_Icon *)cfd->data; + mi = (E_Config_Mime_Icon *)cfdata->data; IFDUP(mi->mime, cfdata->mime); IFDUP(mi->icon, cfdata->icon); @@ -115,6 +119,7 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) IFFREE(cfdata->file); IFFREE(cfdata->mime); IFFREE(cfdata->icon); + e_int_config_mime_edit_done(cfdata->data2); E_FREE(cfdata); } diff --git a/src/bin/e_int_config_mime_edit.h b/src/bin/e_int_config_mime_edit.h index a07945fb9..da63bea0e 100644 --- a/src/bin/e_int_config_mime_edit.h +++ b/src/bin/e_int_config_mime_edit.h @@ -3,7 +3,7 @@ #ifndef E_INT_CONFIG_MIME_EDIT_H #define E_INT_CONFIG_MIME_EDIT_H -EAPI E_Config_Dialog *e_int_config_mime_edit(E_Config_Mime_Icon *data); +EAPI E_Config_Dialog *e_int_config_mime_edit(E_Config_Mime_Icon *data, void *data2); #endif #endif