fix dialog cleanups to work properly

SVN revision: 75665
This commit is contained in:
Mike Blumenkrantz 2012-08-24 14:19:55 +00:00
parent f1c170da5a
commit 028e9e0380
4 changed files with 32 additions and 2 deletions

View File

@ -846,6 +846,16 @@ _edge_binding_sort_cb(const void *d1, const void *d2)
}
/**************** grab window *******/
static void
_dia_del(void *data)
{
E_Config_Dialog_Data *cfdata;
cfdata = e_object_data_get(data);
if (!cfdata) return;
cfdata->locals.dia = NULL;
}
static void
_edge_grab_wnd_show(E_Config_Dialog_Data *cfdata)
{
@ -868,6 +878,8 @@ _edge_grab_wnd_show(E_Config_Dialog_Data *cfdata)
e_dialog_icon_set(cfdata->locals.dia, "enlightenment/edges", 48);
e_dialog_button_add(cfdata->locals.dia, _("Apply"), NULL, _edge_grab_wnd_cb_apply, cfdata);
e_dialog_button_add(cfdata->locals.dia, _("Close"), NULL, _edge_grab_wnd_cb_close, cfdata);
e_object_data_set(E_OBJECT(cfdata->locals.dia), cfdata);
e_object_del_attach_func_set(E_OBJECT(cfdata->locals.dia), _dia_del);
e_win_centered_set(cfdata->locals.dia->win, 1);
evas = e_win_evas_get(cfdata->locals.dia->win);

View File

@ -268,6 +268,17 @@ _basic_apply(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
return 1;
}
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;
}
static void
_cb_icon_sel(void *data, void *data2)
{
@ -292,6 +303,7 @@ _cb_icon_sel(void *data, void *data2)
e_dialog_title_set(dia, _("Select an image"));
dia->data = cfdata;
e_object_del_attach_func_set(E_OBJECT(dia), _dia_del);
o = e_widget_fsel_add(dia->win->evas, "~/", "/", NULL, NULL,
_cb_fsel_sel, cfdata, NULL, cfdata, 1);

View File

@ -636,8 +636,7 @@ _mixer_popup_cb_mixer(void *data, void *data2 __UNUSED__)
}
con = e_container_current_get(e_manager_current_get());
ctxt->mixer_dialog = e_mixer_app_dialog_new(
con, _mixer_app_cb_del, ctxt);
ctxt->mixer_dialog = e_mixer_app_dialog_new(con, _mixer_app_cb_del, ctxt);
_mixer_app_select_current(ctxt->mixer_dialog, inst);
}

View File

@ -222,6 +222,12 @@ _file_select_cancel_cb(void *data __UNUSED__, E_Dialog *dia)
fsel_dia = NULL;
}
static void
_file_select_del_cb(void *d __UNUSED__)
{
fsel_dia = NULL;
}
static void
_win_save_cb(void *data __UNUSED__, void *data2 __UNUSED__)
{
@ -246,6 +252,7 @@ _win_save_cb(void *data __UNUSED__, void *data2 __UNUSED__)
NULL,
NULL, NULL,
NULL, NULL, 1);
e_object_del_attach_func_set(E_OBJECT(dia), _file_select_del_cb);
e_widget_fsel_window_object_set(o, E_OBJECT(dia->win));
o_fsel = o;
evas_object_show(o);