LINUX.ORG.RU

GtkIconView и прокрутка


0

1

Вопрос, так сказать, из двух частей. Поддерживает ли GtkIconView прокрутку самостоятельно или же ему нужен ViewPort? Если не поддерживает, как связать курсор IconView и скроллбары во ViewPort?

Сначала я попробовал сделать без ViewPort - никаких скроллбаров не появилось у IconView, он просто менял свои размеры при заполнении и все. Может конечно нужно было какое-то хитрое свойство установить, но я не нашел какое. Если он сам не может прокручиваться, то зачем ему функция: gtk_icon_view_scroll_to_path () ?

Сделал через ViewPort - все зашибись, все работает. Но как следовать прокрутке вслед за курсором (тем, что там по клавишам ходит)?

★★★★★

>>Поддерживает ли GtkIconView прокрутку самостоятельно или же ему нужен ViewPort? Если не поддерживает, как связать курсор IconView и скроллбары во ViewPort?

Самостоятельную прокрутку не поддерживает, gtk_scrolled_window_add_with_viewport() пробовал? Не надо возиться с вьюпортом.

Если он сам не может прокручиваться, то зачем ему функция: gtk_icon_view_scroll_to_path () ?

Обрабатываешь key event и скроллишь этой функцией по своей установленной модели.

Сделал через ViewPort - все зашибись, все работает. Но как следовать прокрутке вслед за курсором (тем, что там по клавишам ходит)?

Смотри выше.

MuZHiK-2 ★★★★
()
Ответ на: комментарий от MuZHiK-2

Если он сам не может прокручиваться, то зачем ему функция: gtk_icon_view_scroll_to_path () ?

Обрабатываешь key event и скроллишь этой функцией по своей установленной модели.

Вот как раз не работает так. Пробовал. Как раз таки через gtk_scrolled_window_add_with_viewport().

GtkTreePath *path = NULL;
if (gtk_icon_view_get_cursor (GTK_ICON_VIEW (ilist), &path, NULL)) {
		gtk_icon_view_scroll_to_path (GTK_ICON_VIEW (ilist),path,FALSE,0,0);
		gtk_tree_path_free (path);
}
hibou ★★★★★
() автор топика
Ответ на: комментарий от hibou

>>Вот как раз не работает так. Пробовал. Как раз таки через gtk_scrolled_window_add_with_viewport().

И не будет, потому что у тебя структура path пустая. Сперва надо сделать path = gtk_tree_path_new(), а потом ее передавать.

MuZHiK-2 ★★★★
()
Ответ на: комментарий от MuZHiK-2

Если курсор есть, то не пустая. Функция gtk_icon_view_get_cursor () кладет туда нужное если курсор установлен.

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

>>Вот как раз не работает так. Пробовал. Как раз таки через gtk_scrolled_window_add_with_viewport().

Ага, это я вечером немного туплю. Попробуй gtk_widget_grab_focus (ilist) перед получением курсора сделать.

MuZHiK-2 ★★★★
()

Короче, заработало если использовать просто ScrolledWindow без ViewPort. IconView, видимо, поддерживает прокрутку без ViewPort.

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