From e0663ff92d84804a90aacd007e246571c43b9d19 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 4 Jul 2012 08:25:21 +0000 Subject: [PATCH] fix shelf deletion and some crashes SVN revision: 73257 --- src/modules/conf_shelves/e_int_config_shelf.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/modules/conf_shelves/e_int_config_shelf.c b/src/modules/conf_shelves/e_int_config_shelf.c index d4e1c9e8a..73706e336 100644 --- a/src/modules/conf_shelves/e_int_config_shelf.c +++ b/src/modules/conf_shelves/e_int_config_shelf.c @@ -99,6 +99,7 @@ _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata) E_Shelf *es; EINA_LIST_FREE(cfdata->shelves, es) { + if (e_object_is_del(E_OBJECT(es))) continue; evas_object_data_del(es->o_base, "cfdata"); e_object_del_func_set(E_OBJECT(es), NULL); } @@ -601,9 +602,11 @@ _cb_dialog_yes(void *data) if (!cfdata) return; evas_object_data_del(es->o_base, "cfdata"); e_shelf_unsave(es); + e_object_unref(E_OBJECT(es)); e_object_del(E_OBJECT(es)); e_config_save_queue(); - _widgets_disable(cfdata, 0, EINA_TRUE); + _ilist_empty(cfdata); + _ilist_fill(cfdata); } static void @@ -613,12 +616,12 @@ _cb_dialog_destroy(void *data) E_Config_Dialog_Data *cfdata; es = data;; + if (e_object_is_del(E_OBJECT(es))) return; cfdata = evas_object_data_get(es->o_base, "cfdata"); if (!cfdata) return; evas_object_data_del(es->o_base, "cfdata"); e_object_unref(E_OBJECT(es)); - _ilist_empty(cfdata); - _ilist_fill(cfdata); + _widgets_disable(cfdata, 0, EINA_TRUE); } static void