diff options
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | ChangeLog.ja | 1 | ||||
-rw-r--r-- | src/folderview.c | 20 |
3 files changed, 17 insertions, 5 deletions
@@ -1,6 +1,7 @@ 2005-04-08 * src/folderview.c: folderview_check_new(): fixed infinite loop bug. + folderview_new_news_group_cb(): fixed crash bug when subscribing. 2005-04-07 diff --git a/ChangeLog.ja b/ChangeLog.ja index 59c30cde..b491b8d8 100644 --- a/ChangeLog.ja +++ b/ChangeLog.ja @@ -1,6 +1,7 @@ 2005-04-08 * src/folderview.c: folderview_check_new(): 無限ループバグを修正。 + folderview_new_news_group_cb(): 購読時のクラッシュバグを修正。 2005-04-07 diff --git a/src/folderview.c b/src/folderview.c index b6c90ea2..ff20c966 100644 --- a/src/folderview.c +++ b/src/folderview.c @@ -2155,7 +2155,7 @@ static void folderview_new_news_group_cb(FolderView *folderview, guint action, GSList *cur; GNode *gnode; GtkTreePath *server_path; - GtkTreeIter iter; + GtkTreeIter iter, root; item = folderview_get_selected_item(folderview); if (!item) @@ -2167,10 +2167,13 @@ static void folderview_new_news_group_cb(FolderView *folderview, guint action, g_return_if_fail(folder->account != NULL); server_path = gtk_tree_row_reference_get_path(folderview->selected); - gtk_tree_path_up(server_path); - gtk_tree_model_get_iter(model, &iter, server_path); - gtk_tree_model_get(model, &iter, COL_FOLDER_ITEM, &rootitem, -1); + gtk_tree_path_free(server_path); + + if (!gtk_tree_model_iter_parent(model, &root, &iter)) + root = iter; + + gtk_tree_model_get(model, &root, COL_FOLDER_ITEM, &rootitem, -1); new_subscr = grouplist_dialog(folder); @@ -2187,7 +2190,7 @@ static void folderview_new_news_group_cb(FolderView *folderview, guint action, } if (!gtkut_tree_model_find_by_column_data - (model, &found, &iter, COL_FOLDER_ITEM, item)) { + (model, &found, &root, COL_FOLDER_ITEM, item)) { gnode = next; continue; } @@ -2216,6 +2219,13 @@ static void folderview_new_news_group_cb(FolderView *folderview, guint action, folderview_append_item(folderview, NULL, newitem); } + if (new_subscr) { + server_path = gtk_tree_model_get_path(model, &root); + gtk_tree_view_expand_row(GTK_TREE_VIEW(folderview->treeview), + server_path, FALSE); + gtk_tree_path_free(server_path); + } + slist_free_strings(new_subscr); g_slist_free(new_subscr); |