diff --git a/gui/model.c b/gui/model.c index 8cbf4c19..e6e89c12 100644 --- a/gui/model.c +++ b/gui/model.c @@ -124,6 +124,24 @@ static void _queue_model_get_value(GtkTreeModel *model, GtkTreeIter *iter, } } +static gboolean _queue_model_iter_next(GtkTreeModel *model, GtkTreeIter *iter) +{ + GuiQueueModel *gqm = GUI_QUEUE_MODEL(model); + + 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_iter_next(&gqm->gqm_iter); + if (gqm->gqm_iter.it_iter == NULL) + return FALSE; + + iter->stamp = gqm->gqm_stamp; + iter->user_data = &gqm->gqm_iter; + iter->user_data2 = _q_iter_val(&gqm->gqm_iter); + return TRUE; +} + static void _queue_model_init(GuiQueueModel *model) { model->gqm_stamp = g_random_int(); @@ -152,6 +170,7 @@ static void _queue_tree_model_init(GtkTreeModelIface *iface) iface->get_iter = _queue_model_get_iter; iface->get_path = _queue_model_get_path; iface->get_value = _queue_model_get_value; + iface->iter_next = _queue_model_iter_next; } diff --git a/tests/gui/model.c b/tests/gui/model.c index 1a3c2d20..1f056b3e 100644 --- a/tests/gui/model.c +++ b/tests/gui/model.c @@ -87,6 +87,8 @@ static void test_empty() gtk_tree_model_get_value(model, &iter, Q_MODEL_FILE_PATH, &value); test_equal(G_IS_VALUE(&value), false); + test_equal(gtk_tree_model_iter_next(model, &iter), false); + g_object_unref(model); } @@ -150,6 +152,10 @@ static void test_model() "tests/Music/Hyrule Symphony/01 - Title Theme.ogg"); g_value_unset(&value); + test_equal(gtk_tree_model_iter_next(model, &iter), true); + track = iter.user_data2; + test_equal(track->tr_track, 2); + g_object_unref(model); }