diff --git a/src/bin/e_confirm_dialog.c b/src/bin/e_confirm_dialog.c index 067da00c2..5f4f69332 100644 --- a/src/bin/e_confirm_dialog.c +++ b/src/bin/e_confirm_dialog.c @@ -6,6 +6,14 @@ static void _e_confirm_dialog_delete(E_Win *win); static void _e_confirm_dialog_yes(void *data, E_Dialog *dia); static void _e_confirm_dialog_no(void *data, E_Dialog *dia); +static void +_dia_del(void *data) +{ + E_Dialog *dia = data; + + e_object_del(dia->data); +} + /********** externally accesible functions ****************/ EAPI E_Confirm_Dialog * e_confirm_dialog_show(const char *title, const char *icon, const char *text, @@ -35,6 +43,7 @@ e_confirm_dialog_show(const char *title, const char *icon, const char *text, cd->dia = dia; e_win_delete_callback_set(dia->win, _e_confirm_dialog_delete); + e_object_del_attach_func_set(E_OBJECT(dia), _dia_del); if (title) e_dialog_title_set(dia, title); if (icon) e_dialog_icon_set(dia, icon, 64); diff --git a/src/bin/e_fm.c b/src/bin/e_fm.c index c35aa2747..2206d95d3 100644 --- a/src/bin/e_fm.c +++ b/src/bin/e_fm.c @@ -8939,6 +8939,16 @@ _e_fm2_view_menu_use_default_cb(void *data, E_Menu *m, E_Menu_Item *mi) _e_fm2_refresh(sd, m, mi); } +static void +_image_sel_del(void *data) +{ + E_Fm2_Smart_Data *sd; + + sd = e_object_data_get(data); + if (!sd) return; + sd->image_dialog = NULL; +} + static void _e_fm2_view_image_sel(E_Fm2_Smart_Data *sd, const char *title, void (*ok_cb)(void *data, E_Dialog *dia), @@ -8970,6 +8980,8 @@ _e_fm2_view_image_sel(E_Fm2_Smart_Data *sd, const char *title, e_dialog_button_add(dia, _("Cancel"), NULL, _e_fm2_view_image_sel_close, sd); e_dialog_resizable_set(dia, 1); e_win_centered_set(dia->win, 1); + e_object_data_set(E_OBJECT(dia), sd); + e_object_del_attach_func_set(E_OBJECT(dia), _image_sel_del); e_dialog_show(dia); sd->image_dialog = dia; diff --git a/src/bin/e_fm_prop.c b/src/bin/e_fm_prop.c index 3dc3dd971..776f217c8 100644 --- a/src/bin/e_fm_prop.c +++ b/src/bin/e_fm_prop.c @@ -574,6 +574,18 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data #endif +static void +_dia_del(void *data) +{ + E_Dialog *dia = data; + E_Config_Dialog_Data *cfdata; + + cfdata = dia->data; + if (!cfdata) return; + cfdata->gui.fsel = NULL; + cfdata->gui.fsel_wid = NULL; +} + static void _cb_icon_sel(void *data, void *data2) { @@ -612,6 +624,7 @@ _cb_icon_sel(void *data, void *data2) e_util_win_auto_resize_fill(dia->win); e_win_centered_set(dia->win, 1); e_dialog_show(dia); + e_object_del_attach_func_set(E_OBJECT(dia), _dia_del); cfdata->gui.fsel = dia; }