forked from enlightenment/enlightenment
e confirm dialogs no longer crash constantly
SVN revision: 75923
This commit is contained in:
parent
c342111786
commit
e440668ea8
|
@ -63,8 +63,12 @@ e_confirm_dialog_show(const char *title, const char *icon, const char *text,
|
||||||
static void
|
static void
|
||||||
_e_confirm_dialog_free(E_Confirm_Dialog *cd)
|
_e_confirm_dialog_free(E_Confirm_Dialog *cd)
|
||||||
{
|
{
|
||||||
if ((cd->dia) && (cd->dia->win))
|
E_Dialog *dia;
|
||||||
_e_confirm_dialog_delete(cd->dia->win);
|
|
||||||
|
dia = cd->dia;
|
||||||
|
if (cd->del.func) cd->del.func(cd->del.data);
|
||||||
|
e_object_del(E_OBJECT(cd->dia));
|
||||||
|
free(cd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -73,8 +77,10 @@ _e_confirm_dialog_yes(void *data, E_Dialog *dia __UNUSED__)
|
||||||
E_Confirm_Dialog *cd;
|
E_Confirm_Dialog *cd;
|
||||||
|
|
||||||
cd = data;
|
cd = data;
|
||||||
|
e_object_ref(data);
|
||||||
if (cd->yes.func) cd->yes.func(cd->yes.data);
|
if (cd->yes.func) cd->yes.func(cd->yes.data);
|
||||||
_e_confirm_dialog_delete(cd->dia->win);
|
e_object_del(data);
|
||||||
|
e_object_unref(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -83,21 +89,18 @@ _e_confirm_dialog_no(void *data, E_Dialog *dia __UNUSED__)
|
||||||
E_Confirm_Dialog *cd;
|
E_Confirm_Dialog *cd;
|
||||||
|
|
||||||
cd = data;
|
cd = data;
|
||||||
|
e_object_ref(data);
|
||||||
if (cd->no.func) cd->no.func(cd->no.data);
|
if (cd->no.func) cd->no.func(cd->no.data);
|
||||||
_e_confirm_dialog_delete(cd->dia->win);
|
e_object_del(data);
|
||||||
|
e_object_unref(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_confirm_dialog_delete(E_Win *win)
|
_e_confirm_dialog_delete(E_Win *win)
|
||||||
{
|
{
|
||||||
E_Dialog *dia;
|
E_Dialog *dia;
|
||||||
E_Confirm_Dialog *cd;
|
|
||||||
|
|
||||||
dia = win->data;
|
dia = win->data;
|
||||||
cd = dia->data;
|
e_object_del(dia->data);
|
||||||
|
|
||||||
if (cd->del.func) cd->del.func(cd->del.data);
|
|
||||||
e_util_defer_object_del(E_OBJECT(dia));
|
|
||||||
free(cd);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue