src/gtkconn.c

changeset 7643
ab3cb7a417b3
parent 7640
69a469c10627
child 7648
8c8fa46e84a1
equal deleted inserted replaced
7642:4e1735a499f5 7643:ab3cb7a417b3
312 return; 312 return;
313 } 313 }
314 gtk_tree_model_get_value(model, &iter, 4, &val); 314 gtk_tree_model_get_value(model, &iter, 4, &val);
315 account = g_value_get_pointer(&val); 315 account = g_value_get_pointer(&val);
316 g_value_unset(&val); 316 g_value_unset(&val);
317 gaim_account_connect(account); 317 /* remove all disconnections of the account to be reconnected */
318 /* remove all disconnections of the account reconnected */
319 if (gtk_tree_model_get_iter_first(model, &iter)) { 318 if (gtk_tree_model_get_iter_first(model, &iter)) {
319 GList *l_del = NULL;
320 GaimAccount *account2 = NULL; 320 GaimAccount *account2 = NULL;
321 gboolean alreadyIterated = FALSE;
322 do { 321 do {
323 alreadyIterated = FALSE;
324 gtk_tree_model_get_value(model, &iter, 4, &val); 322 gtk_tree_model_get_value(model, &iter, 4, &val);
325 account2 = g_value_get_pointer(&val); 323 account2 = g_value_get_pointer(&val);
326 g_value_unset(&val); 324 g_value_unset(&val);
327 if (account2 == account) { 325 if (account2 == account) {
328 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); 326 GtkTreePath *path = gtk_tree_model_get_path(model, &iter);
329 alreadyIterated = TRUE; 327 GtkTreeRowReference* del_row = gtk_tree_row_reference_new(model, path);
328 l_del = g_list_append(l_del, del_row);
330 } 329 }
331 g_value_unset(&val); 330 g_value_unset(&val);
332 } while (alreadyIterated || gtk_tree_model_iter_next(model, &iter)); 331 } while (gtk_tree_model_iter_next(model, &iter));
332
333 while (l_del != NULL) {
334 GtkTreeRowReference* del_row = l_del->data;
335 GtkTreePath *path = gtk_tree_row_reference_get_path(del_row);
336 if (gtk_tree_model_get_iter(model, &iter, path))
337 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
338 l_del = l_del->next;
339 }
333 } 340 }
341
342 gaim_account_connect(account);
334 343
335 if (!gtk_tree_model_get_iter_first(model, &iter)) 344 if (!gtk_tree_model_get_iter_first(model, &iter))
336 disconnect_window_hide(); 345 disconnect_window_hide();
337 else { 346 else {
338 gtk_tree_selection_select_iter(sel, &iter); 347 gtk_tree_selection_select_iter(sel, &iter);

mercurial