diff options
author | Szilárd Pfeiffer <mailbox@pfeifferszilard.hu> | 2011-01-05 23:39:11 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2011-01-05 23:39:11 -0500 |
commit | 8219ed3a26ef4e2a824d8070eb39e3aa95489fd8 (patch) | |
tree | 8335513cd1ff9487b9f5584d8ec44a42bec09185 /gtk/gtkliststore.c | |
parent | 072023e57b6c894436f1a480797621f3740f6413 (diff) | |
download | gtk+-8219ed3a26ef4e2a824d8070eb39e3aa95489fd8.tar.gz |
Add gtk_tree_model_iter_previous() vfunc
https://bugzilla.gnome.org/show_bug.cgi?id=128058
Diffstat (limited to 'gtk/gtkliststore.c')
-rw-r--r-- | gtk/gtkliststore.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gtk/gtkliststore.c b/gtk/gtkliststore.c index fc43eba05c..4d9c1ddb1c 100644 --- a/gtk/gtkliststore.c +++ b/gtk/gtkliststore.c @@ -75,6 +75,8 @@ static void gtk_list_store_get_value (GtkTreeModel *tree_mode GValue *value); static gboolean gtk_list_store_iter_next (GtkTreeModel *tree_model, GtkTreeIter *iter); +static gboolean gtk_list_store_iter_previous (GtkTreeModel *tree_model, + GtkTreeIter *iter); static gboolean gtk_list_store_iter_children (GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *parent); @@ -187,6 +189,7 @@ gtk_list_store_tree_model_init (GtkTreeModelIface *iface) iface->get_path = gtk_list_store_get_path; iface->get_value = gtk_list_store_get_value; iface->iter_next = gtk_list_store_iter_next; + iface->iter_previous = gtk_list_store_iter_previous; iface->iter_children = gtk_list_store_iter_children; iface->iter_has_child = gtk_list_store_iter_has_child; iface->iter_n_children = gtk_list_store_iter_n_children; @@ -550,6 +553,26 @@ gtk_list_store_iter_next (GtkTreeModel *tree_model, } static gboolean +gtk_list_store_iter_previous (GtkTreeModel *tree_model, + GtkTreeIter *iter) +{ + GtkListStore *list_store = GTK_LIST_STORE (tree_model); + GtkListStorePrivate *priv = list_store->priv; + + g_return_val_if_fail (priv->stamp == iter->stamp, FALSE); + + if (g_sequence_iter_is_begin (iter->user_data)) + { + iter->stamp = 0; + return FALSE; + } + + iter->user_data = g_sequence_iter_prev (iter->user_data); + + return TRUE; +} + +static gboolean gtk_list_store_iter_children (GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *parent) |