From: Ethan B. <ebl...@us...> - 2003-11-26 17:59:09
|
Update of /cvsroot/gaim/gaim/src In directory sc8-pr-cvs1:/tmp/cvs-serv23095/src Modified Files: gtkconn.c Log Message: datallah seems to think that just compiling isn't enough, and that it should also be correct. Picky, picky... Index: gtkconn.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/gtkconn.c,v retrieving revision 1.32 retrieving revision 1.33 diff -u -d -p -r1.32 -r1.33 --- gtkconn.c 26 Nov 2003 16:24:33 -0000 1.32 +++ gtkconn.c 26 Nov 2003 17:59:04 -0000 1.33 @@ -314,23 +314,32 @@ static void disconnect_response_cb(GtkDi gtk_tree_model_get_value(model, &iter, 4, &val); account = g_value_get_pointer(&val); g_value_unset(&val); - gaim_account_connect(account); - /* remove all disconnections of the account reconnected */ + /* remove all disconnections of the account to be reconnected */ if (gtk_tree_model_get_iter_first(model, &iter)) { + GList *l_del = NULL; GaimAccount *account2 = NULL; - gboolean alreadyIterated = FALSE; do { - alreadyIterated = FALSE; gtk_tree_model_get_value(model, &iter, 4, &val); account2 = g_value_get_pointer(&val); g_value_unset(&val); if (account2 == account) { - gtk_list_store_remove(GTK_LIST_STORE(model), &iter); - alreadyIterated = TRUE; + GtkTreePath *path = gtk_tree_model_get_path(model, &iter); + GtkTreeRowReference* del_row = gtk_tree_row_reference_new(model, path); + l_del = g_list_append(l_del, del_row); } g_value_unset(&val); - } while (alreadyIterated || gtk_tree_model_iter_next(model, &iter)); + } while (gtk_tree_model_iter_next(model, &iter)); + + while (l_del != NULL) { + GtkTreeRowReference* del_row = l_del->data; + GtkTreePath *path = gtk_tree_row_reference_get_path(del_row); + if (gtk_tree_model_get_iter(model, &iter, path)) + gtk_list_store_remove(GTK_LIST_STORE(model), &iter); + l_del = l_del->next; + } } + + gaim_account_connect(account); if (!gtk_tree_model_get_iter_first(model, &iter)) disconnect_window_hide(); |