summaryrefslogtreecommitdiff
path: root/gtk/gtkliststore.c
diff options
context:
space:
mode:
authorSzilárd Pfeiffer <mailbox@pfeifferszilard.hu>2011-01-05 23:39:11 -0500
committerMatthias Clasen <mclasen@redhat.com>2011-01-05 23:39:11 -0500
commit8219ed3a26ef4e2a824d8070eb39e3aa95489fd8 (patch)
tree8335513cd1ff9487b9f5584d8ec44a42bec09185 /gtk/gtkliststore.c
parent072023e57b6c894436f1a480797621f3740f6413 (diff)
downloadgtk+-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.c23
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)