diff --git a/src/bin/e_int_config_mime.c b/src/bin/e_int_config_mime.c
index b61a8f4ce..b34d60e24 100644
--- a/src/bin/e_int_config_mime.c
+++ b/src/bin/e_int_config_mime.c
@@ -10,9 +10,13 @@ static void _cb_del (void *data, void *data2);
static void _cb_config (void *data, void *data2);
static void _list_cb_sel (void *data);
+static void _cb_confirm_yes (void *data);
+static void _cb_confirm_destroy (void *data);
+
struct _E_Config_Dialog_Data
{
Evas_List *mimes;
+ const char *sel_mt;
struct
{
Evas_Object *list;
@@ -155,7 +159,17 @@ _cb_add(void *data, void *data2)
static void
_cb_del(void *data, void *data2)
{
+ E_Config_Dialog_Data *cfdata;
+ char buf[4096];
+ cfdata = data;
+ if (!cfdata) return;
+
+ snprintf(buf, sizeof(buf), _("You requested to delete \"%s\".
"
+ "Are you sure you want to delete this mime type?"), cfdata->sel_mt);
+ e_confirm_dialog_show(_("Are you sure you want to delete this mime type?"),
+ "enlightenment/exit", buf, NULL, NULL, _cb_confirm_yes,
+ NULL, cfdata, NULL, _cb_confirm_destroy, NULL);
}
static void
@@ -171,7 +185,42 @@ _list_cb_sel(void *data)
cfdata = data;
if (!cfdata) return;
+
+ cfdata->sel_mt = e_widget_ilist_selected_label_get(cfdata->gui.list);
+ if (!cfdata->sel_mt) return;
e_widget_disabled_set(cfdata->gui.del, 0);
e_widget_disabled_set(cfdata->gui.config, 0);
}
+
+static void
+_cb_confirm_yes(void *data)
+{
+ E_Config_Dialog_Data *cfdata;
+ Evas_List *l;
+
+ cfdata = data;
+ if (!cfdata) return;
+ if (!cfdata->sel_mt) return;
+
+ for (l = e_config->mime_icons; l; l = l->next)
+ {
+ E_Config_Mime_Icon *mi;
+
+ mi = l->data;
+ if (!mi) continue;
+ if (strcmp(mi->mime, cfdata->sel_mt)) continue;
+ cfdata->mimes = evas_list_remove(cfdata->mimes, mi);
+ e_config->mime_icons = evas_list_remove(e_config->mime_icons, mi);
+ }
+}
+
+static void
+_cb_confirm_destroy(void *data)
+{
+ E_Config_Dialog_Data *cfdata;
+
+ cfdata = data;
+ if (!cfdata) return;
+ _fill_list(cfdata);
+}