From 1b7ea5a86c78c1085bc7c83f23b490726b355caf Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Sun, 21 Aug 2016 09:50:13 -0400 Subject: [PATCH] gui/model: Use queue positions instead of queue iterator This helps simplify the code, since we can reuse gui_model_iter_nth_child() here. Signed-off-by: Anna Schumaker --- gui/model.c | 28 +++++++++------------------- include/gui/model.h | 2 -- 2 files changed, 9 insertions(+), 21 deletions(-) diff --git a/gui/model.c b/gui/model.c index f68f0cf5..f11940c9 100644 --- a/gui/model.c +++ b/gui/model.c @@ -60,16 +60,13 @@ static gboolean __gui_model_get_iter(GtkTreeModel *model, GtkTreeIter *iter, static GtkTreePath *__gui_model_get_path(GtkTreeModel *model, GtkTreeIter *iter) { - struct queue_iter *q_it; GtkTreePath *path; g_return_val_if_fail(iter != NULL, FALSE); - g_return_val_if_fail(iter->user_data, FALSE); g_return_val_if_fail(iter->user_data2, FALSE); - q_it = iter->user_data; path = gtk_tree_path_new(); - gtk_tree_path_append_index(path, q_it->it_pos); + gtk_tree_path_append_index(path, GPOINTER_TO_UINT(iter->user_data)); return path; } @@ -127,20 +124,13 @@ static void __gui_model_get_value(GtkTreeModel *model, GtkTreeIter *iter, static gboolean __gui_model_iter_next(GtkTreeModel *model, GtkTreeIter *iter) { - GuiModel *gqm = GUI_MODEL(model); + unsigned int pos; g_return_val_if_fail(iter != NULL, FALSE); - g_return_val_if_fail(iter->user_data, FALSE); g_return_val_if_fail(iter->user_data2, FALSE); - queue_iter_next(&gqm->gm_iter); - if (gqm->gm_iter.it_iter == NULL) - return FALSE; - - iter->stamp = gqm->gm_stamp; - iter->user_data = &gqm->gm_iter; - iter->user_data2 = queue_iter_val(&gqm->gm_iter); - return TRUE; + pos = GPOINTER_TO_UINT(iter->user_data) + 1; + return __gui_model_iter_nth_child(model, iter, NULL, pos); } static gboolean __gui_model_iter_children(GtkTreeModel *model, GtkTreeIter *iter, @@ -166,14 +156,14 @@ static gboolean __gui_model_iter_nth_child(GtkTreeModel *model, GtkTreeIter *parent, gint n) { - if (parent || !cur_playlist || - n >= queue_size(&cur_playlist->pl_queue)) + struct queue *queue = &cur_playlist->pl_queue; + + if (parent || !cur_playlist || n >= queue_size(queue)) return FALSE; - queue_iter_set(&cur_playlist->pl_queue, &queue_model->gm_iter, n); iter->stamp = queue_model->gm_stamp; - iter->user_data = &queue_model->gm_iter; - iter->user_data2 = queue_iter_val(&queue_model->gm_iter); + iter->user_data = GUINT_TO_POINTER(n); + iter->user_data2 = queue_at(queue, n); return TRUE; } diff --git a/include/gui/model.h b/include/gui/model.h index d01cda85..817ed6b1 100644 --- a/include/gui/model.h +++ b/include/gui/model.h @@ -28,8 +28,6 @@ enum gui_model_columns { struct gui_model { GObject gm_parent; /* This MUST be the first member. */ gint gm_stamp; /* This is used to check iter validity. */ - - struct queue_iter gm_iter; /* The current _q_iter. */ }; typedef struct gui_model GuiModel;