diff options
author | William Jon McCann <jmccann@redhat.com> | 2012-05-26 10:59:25 -0400 |
---|---|---|
committer | William Jon McCann <jmccann@redhat.com> | 2012-06-30 12:32:51 -0400 |
commit | ef467c8775392d0f0feb0e38f7a80f2d41719d84 (patch) | |
tree | eb72f83da913d5fe43b030f316dc7f54d6bf92a5 /src/nautilus-list-model.c | |
parent | 6aac88928b1935c8e4f5c54a61935f05c57d740e (diff) | |
download | nautilus-ef467c8775392d0f0feb0e38f7a80f2d41719d84.tar.gz |
Use a list model instead of a tree model
It is the list view after all. Tree models don't work well on
touch and it isn't consistent with the file chooser.
https://bugzilla.gnome.org/show_bug.cgi?id=676531
Diffstat (limited to 'src/nautilus-list-model.c')
-rw-r--r-- | src/nautilus-list-model.c | 67 |
1 files changed, 22 insertions, 45 deletions
diff --git a/src/nautilus-list-model.c b/src/nautilus-list-model.c index 4b3aff438..1c3589ea3 100644 --- a/src/nautilus-list-model.c +++ b/src/nautilus-list-model.c @@ -403,39 +403,31 @@ nautilus_list_model_iter_children (GtkTreeModel *tree_model, GtkTreeIter *iter, { NautilusListModel *model; GSequence *files; - FileEntry *file_entry; model = (NautilusListModel *)tree_model; - - if (parent == NULL) { - files = model->details->files; - } else { - file_entry = g_sequence_get (parent->user_data); - files = file_entry->files; - } - if (files == NULL || g_sequence_get_length (files) == 0) { + /* this is a list, nodes have no children */ + if (parent != NULL) { + iter->stamp = 0; return FALSE; } - - iter->stamp = model->details->stamp; - iter->user_data = g_sequence_get_begin_iter (files); - return TRUE; + files = model->details->files; + + if (g_sequence_get_length (files) > 0) { + iter->stamp = model->details->stamp; + iter->user_data = g_sequence_get_begin_iter (files); + return TRUE; + } else { + iter->stamp = 0; + return FALSE; + } } static gboolean nautilus_list_model_iter_has_child (GtkTreeModel *tree_model, GtkTreeIter *iter) { - FileEntry *file_entry; - - if (iter == NULL) { - return !nautilus_list_model_is_empty (NAUTILUS_LIST_MODEL (tree_model)); - } - - file_entry = g_sequence_get (iter->user_data); - - return (file_entry->files != NULL && g_sequence_get_length (file_entry->files) > 0); + return FALSE; } static int @@ -443,15 +435,13 @@ nautilus_list_model_iter_n_children (GtkTreeModel *tree_model, GtkTreeIter *iter { NautilusListModel *model; GSequence *files; - FileEntry *file_entry; model = (NautilusListModel *)tree_model; if (iter == NULL) { files = model->details->files; } else { - file_entry = g_sequence_get (iter->user_data); - files = file_entry->files; + return 0; } return g_sequence_get_length (files); @@ -463,17 +453,16 @@ nautilus_list_model_iter_nth_child (GtkTreeModel *tree_model, GtkTreeIter *iter, NautilusListModel *model; GSequenceIter *child; GSequence *files; - FileEntry *file_entry; model = (NautilusListModel *)tree_model; - + + iter->stamp = 0; + if (parent != NULL) { - file_entry = g_sequence_get (parent->user_data); - files = file_entry->files; - } else { - files = model->details->files; + return FALSE; } + files = model->details->files; child = g_sequence_get_iter_at_pos (files, n); if (g_sequence_iter_is_end (child)) { @@ -489,21 +478,9 @@ nautilus_list_model_iter_nth_child (GtkTreeModel *tree_model, GtkTreeIter *iter, static gboolean nautilus_list_model_iter_parent (GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *child) { - NautilusListModel *model; - FileEntry *file_entry; - - model = (NautilusListModel *)tree_model; - - file_entry = g_sequence_get (child->user_data); - - if (file_entry->parent == NULL) { - return FALSE; - } + iter->stamp = 0; - iter->stamp = model->details->stamp; - iter->user_data = file_entry->parent->ptr; - - return TRUE; + return FALSE; } static GSequenceIter * |