aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog9
-rw-r--r--mail/em-folder-tree.c42
2 files changed, 30 insertions, 21 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index d378adb0e5..4760be9866 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -7,6 +7,15 @@
2004-05-24 Not Zed <NotZed@Ximian.com>
+ * em-folder-tree.c (em_folder_tree_set_selected): use set_cursor
+ instead of scroll_to_row. See #58383.
+ (get_selected_uris_iterate): removed.
+ (em_folder_tree_get_selected_uris): use an interative call based
+ on gtk_tree_selection_get_selected_rows rather than
+ selected_foreach, as the gtk+ docs suggest. was trying to fix a
+ bug but it seems gtktreeselection bug (shift-select rows using
+ keyboard only)
+
* message-list.c (regen_list_regened): pull the message from the
regen list before we check the list and pending uid.
diff --git a/mail/em-folder-tree.c b/mail/em-folder-tree.c
index 67e16ae0bf..a424250707 100644
--- a/mail/em-folder-tree.c
+++ b/mail/em-folder-tree.c
@@ -1468,32 +1468,32 @@ void em_folder_tree_set_excluded(EMFolderTree *emft, guint32 flags)
emft->priv->excluded = flags;
}
-static void
-get_selected_uris_iterate (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
-{
- GList **list = (GList **) data;
- char *uri;
-
- gtk_tree_model_get (model, iter, /*COL_STRING_FOLDER_PATH, &path,*/
- COL_STRING_URI, &uri, -1);
- *list = g_list_append (*list, g_strdup (uri));
-}
-
GList *
em_folder_tree_get_selected_uris (EMFolderTree *emft)
{
GtkTreeSelection *selection = gtk_tree_view_get_selection (emft->priv->treeview);
- GList *lost = emft->priv->lost_folders;
- GList *list = NULL;
-
+ GList *list = NULL, *rows, *l;
+ GtkTreeModel *model;
+
/* at first, add lost uris */
- while (lost) {
- list = g_list_append (list, g_strdup (lost->data));
- lost = g_list_next (lost);
+ for (l = emft->priv->lost_folders; l; l = g_list_next(l))
+ list = g_list_append (l, g_strdup (l->data));
+
+ rows = gtk_tree_selection_get_selected_rows(selection, &model);
+ for (l=rows; l; l=g_list_next(l)) {
+ GtkTreeIter iter;
+ GtkTreePath *path = l->data;
+
+ if (gtk_tree_model_get_iter(model, &iter, path)) {
+ char *uri;
+
+ gtk_tree_model_get(model, &iter, COL_STRING_URI, &uri, -1);
+ list = g_list_append(list, g_strdup(uri));
+ }
+ gtk_tree_path_free(path);
}
-
- gtk_tree_selection_selected_foreach (selection, get_selected_uris_iterate, &list);
-
+ g_list_free(rows);
+
return list;
}
@@ -2736,7 +2736,7 @@ em_folder_tree_set_selected (EMFolderTree *emft, const char *uri)
gtk_tree_view_expand_to_path (priv->treeview, tree_path);
selection = gtk_tree_view_get_selection (priv->treeview);
gtk_tree_selection_select_path (selection, tree_path);
- gtk_tree_view_scroll_to_cell (priv->treeview, tree_path, NULL, FALSE, 0.0, 0.0);
+ gtk_tree_view_set_cursor(priv->treeview, tree_path, NULL, FALSE);
gtk_tree_path_free (tree_path);
camel_object_unref (store);
g_free (path);