LINUX.ORG.RU

GtkTreeIter: узнать о предыдущем и следующем элементах


0

0

Есть GtkTreeCellDataFunc. Внутри ее доступны: GtkTreeViewColumn, GtkCellRenderer, GtkTreeModel, GtkTreeter. Как правильно узнать, имеются ли у текущего элемента prev и next sibling элементы?

Это продолжение вопроса; нужно для того, чтобы правильно расставить управляющие pixbuf'ы во View для первого и крайнего элементов соответственно.

Пока удалось только найти gtk_tree_model_iter_next(). Но у этого варианта отсутствует парная _prev() функция + выглядит данный подход как-то криво.

Спасибо.

★★★

Нашел. Вопрос снят.

Move down:
     GtkTreeIter* next_iter = gtk_tree_iter_copy(iter);
     gboolean next_item = gtk_tree_model_iter_next(model, next_iter);

     g_object_set(cell, "stock-id", next_item ? GTK_STOCK_GO_DOWN : 0, NULL);

     gtk_tree_iter_free(next_iter);


Move up:
     GtkTreePath* path = gtk_tree_model_get_path(model, iter);
     gboolean prev_item = gtk_tree_path_prev(path);

     g_object_set(cell, "stock-id", prev_item ? GTK_STOCK_GO_UP : 0, NULL);

     gtk_tree_path_free(path);

kondor ★★★
() автор топика
Ответ на: комментарий от Deleted

У меня список, а не дерево -- виноват, не полностью вопрос сформулировал. Но решение уже нашел. Спасибо.

kondor ★★★
() автор топика
Ответ на: комментарий от kondor

Правда, единственное, что мне не нравится в данном подходе -- отсутствие единообразия. Но это, imho, уже недостатки API самого Gtk.

kondor ★★★
() автор топика
Ответ на: комментарий от Deleted

gtk_tree_path_next() не возвращает результата выполнения операции: он тупо перемещает позицию, не сообщая, существует ли next или нет. gtk_tree_path_prev() же возвращает результат. Нет здесь, увы, однообразия.

kondor ★★★
() автор топика
Ответ на: комментарий от kondor

ааа, ну тогда логично, ибо движение есть парент-чайлд, кое имеет свойства один парент - много чилдов и никак иначе.

ну да ладно, это уже риторика.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.