From 2693911367098285a686f6f060fe455e83becde5 Mon Sep 17 00:00:00 2001 From: Alexandre Savard <alexandre.savard@savoirfairelinux.net> Date: Thu, 27 Aug 2009 11:44:25 -0400 Subject: [PATCH] [#2006] Make calltree_remove_call recursive (for GtkTreeStore) --- sflphone-client-gnome/src/actions.c | 2 +- sflphone-client-gnome/src/contacts/calllist.c | 4 ++-- sflphone-client-gnome/src/contacts/calltree.c | 16 ++++++++++------ sflphone-client-gnome/src/contacts/calltree.h | 2 +- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/sflphone-client-gnome/src/actions.c b/sflphone-client-gnome/src/actions.c index de6da55168..5520d25e5d 100644 --- a/sflphone-client-gnome/src/actions.c +++ b/sflphone-client-gnome/src/actions.c @@ -139,7 +139,7 @@ sflphone_ringing(callable_obj_t * c ) sflphone_hung_up( callable_obj_t * c) { calllist_remove( current_calls, c->_callID); - calltree_remove_call(current_calls, c); + calltree_remove_call(current_calls, c, NULL); c->_state = CALL_STATE_DIALING; update_menus(); #if GTK_CHECK_VERSION(2,10,0) diff --git a/sflphone-client-gnome/src/contacts/calllist.c b/sflphone-client-gnome/src/contacts/calllist.c index b44c9dfd5d..2e635c4a34 100644 --- a/sflphone-client-gnome/src/contacts/calllist.c +++ b/sflphone-client-gnome/src/contacts/calllist.c @@ -112,7 +112,7 @@ calllist_clean_history( void ) callable_obj_t* c = calllist_get_nth( history , i ); // Delete the call from the call tree DEBUG("Delete calls"); - calltree_remove_call(history , c); + calltree_remove_call(history, c, NULL); } calllist_reset( history ); } @@ -122,7 +122,7 @@ void calllist_remove_from_history( callable_obj_t* c ) { calllist_remove( history, c->_callID ); - calltree_remove_call( history, c ); + calltree_remove_call(history, c, NULL); DEBUG("Size of history = %i" , calllist_get_size( history )); } diff --git a/sflphone-client-gnome/src/contacts/calltree.c b/sflphone-client-gnome/src/contacts/calltree.c index ac30bc8426..28d9cf6b27 100644 --- a/sflphone-client-gnome/src/contacts/calltree.c +++ b/sflphone-client-gnome/src/contacts/calltree.c @@ -314,19 +314,24 @@ calltree_create (calltab_t* tab, gboolean searchbar_type) } void -calltree_remove_call (calltab_t* tab, callable_obj_t * c) + calltree_remove_call (calltab_t* tab, callable_obj_t * c, GtkTreeIter *parent) { GtkTreeIter iter; GValue val; callable_obj_t * iterCall; GtkTreeStore* store = tab->store; - int nbChild = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL); + int nbChild = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), parent); int i; for( i = 0; i < nbChild; i++) { - if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, i)) + if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, parent, i)) { + if(gtk_tree_model_iter_has_child(GTK_TREE_MODEL(store), &iter)) + { + calltree_remove_call (tab, c, &iter); + } + val.g_type = 0; gtk_tree_model_get_value (GTK_TREE_MODEL(store), &iter, 2, &val); @@ -700,7 +705,7 @@ void calltree_add_conference (calltab_t* tab, const conference_obj_t* conf) call = calllist_get (tab, call_id); // create_new_call_from_details (conf_id, conference_details, &c); - calltree_remove_call(tab, call); + calltree_remove_call(tab, call, NULL); calltree_add_call (tab, call, &iter); } } @@ -739,8 +744,7 @@ void calltree_remove_conference (calltab_t* tab, const conference_obj_t* conf) int nbParticipant; - int i; - int j; + int i, j; for( i = 0; i < nbChild; i++) { if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter_parent, NULL, i)) diff --git a/sflphone-client-gnome/src/contacts/calltree.h b/sflphone-client-gnome/src/contacts/calltree.h index 111fc519d2..c2ba938c93 100644 --- a/sflphone-client-gnome/src/contacts/calltree.h +++ b/sflphone-client-gnome/src/contacts/calltree.h @@ -54,7 +54,7 @@ calltree_update_call (calltab_t* ct, callable_obj_t * c, GtkTreeIter *parent); * @param c The call to remove */ void -calltree_remove_call (calltab_t* ct, callable_obj_t * c); +calltree_remove_call (calltab_t* ct, callable_obj_t * c, GtkTreeIter *parent); void calltree_add_conference (calltab_t* tab, const conference_obj_t* conf); -- GitLab