gui/model: Add support for gtk_tree_model_iter_children()

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
Anna Schumaker 2016-01-17 09:55:45 -05:00
parent ed69e3d2b8
commit b34fd6d522
2 changed files with 25 additions and 0 deletions

View File

@ -142,6 +142,25 @@ static gboolean _queue_model_iter_next(GtkTreeModel *model, GtkTreeIter *iter)
return TRUE;
}
static gboolean _queue_model_iter_children(GtkTreeModel *model,
GtkTreeIter *iter,
GtkTreeIter *parent)
{
GuiQueueModel *gqm = GUI_QUEUE_MODEL(model);
if (parent)
return FALSE;
if (queue_size(gqm->gqm_queue) == 0)
return FALSE;
_q_iter_init(&gqm->gqm_queue->q_tracks, &gqm->gqm_iter);
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();
@ -171,6 +190,7 @@ static void _queue_tree_model_init(GtkTreeModelIface *iface)
iface->get_path = _queue_model_get_path;
iface->get_value = _queue_model_get_value;
iface->iter_next = _queue_model_iter_next;
iface->iter_children = _queue_model_iter_children;
}

View File

@ -88,6 +88,7 @@ static void test_empty()
test_equal(G_IS_VALUE(&value), false);
test_equal(gtk_tree_model_iter_next(model, &iter), false);
test_equal(gtk_tree_model_iter_children(model, &iter, NULL), false);
g_object_unref(model);
}
@ -156,6 +157,10 @@ static void test_model()
track = iter.user_data2;
test_equal(track->tr_track, 2);
test_equal(gtk_tree_model_iter_children(model, &iter, NULL), true);
track = iter.user_data2;
test_equal(track->tr_track, 1);
g_object_unref(model);
}