From 2473419ecb42e4576929fce999598e6edf4c4f5c Mon Sep 17 00:00:00 2001 From: Christopher Michael Date: Tue, 13 May 2008 08:39:29 +0000 Subject: [PATCH] Add some code to handle deleting remembers for any active borders. This catches a segfault that according previously when trying to remove a remember from an active border via this dialog. SVN revision: 34558 --- .../conf_window_remembers/e_int_config_remembers.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/modules/conf_window_remembers/e_int_config_remembers.c b/src/modules/conf_window_remembers/e_int_config_remembers.c index 8c8689950..d5820a9a3 100644 --- a/src/modules/conf_window_remembers/e_int_config_remembers.c +++ b/src/modules/conf_window_remembers/e_int_config_remembers.c @@ -182,7 +182,7 @@ static void _cb_delete(void *data, void *data2) { E_Config_Dialog_Data *cfdata; - Evas_List *l = NULL; + Evas_List *l = NULL, *b = NULL; int i = 0, changed = 0; if (!(cfdata = data)) return; @@ -194,6 +194,15 @@ _cb_delete(void *data, void *data2) item = l->data; if ((!item) || (!item->selected)) continue; if (!(rem = e_widget_ilist_nth_data_get(cfdata->list, i))) continue; + for (b = e_border_client_list(); b; b = b->next) + { + E_Border *bd = NULL; + + if (!(bd = b->data)) continue; + if (!bd->remember) continue; + if (bd->remember != rem) continue; + bd->remember = NULL; + } e_remember_unuse(rem); e_remember_del(rem); changed = 1; @@ -201,6 +210,7 @@ _cb_delete(void *data, void *data2) if (changed) e_config_save_queue(); if (1) evas_list_free(l); + if (b) evas_list_free(b); _fill_remembers(cfdata); }