LINUX.ORG.RU

[cl-gtk2] GtkEntryCompletion division by zero


0

1

Добавил к полю ввода GtkEntryCompletion.

(let ((cw (make-instance 'gtk:entry-completion)))
  (setf (gtk:entry-completion-model cw) (build-name-completion-model names))
  (setf (gtk:entry-completion-text-column cw) 0)
  (setf (gtk:entry-completion widget) cw)))

При попытке ввести что-нибудь требующее дополнения происходит DIVISION-BY-ZERO.

Gdb привёл меня сюда. Высота равна нулю, хотя matches есть.

Трассировка функции gtk_tree_view_column_cell_get_size показывает, что вот этот цикл не выполняется ни разу. Т. е. cell_list == NULL. Это ставит меня в тупик. Теоретически этот cell_list должен был заполниться при выборе text-column. Куда копать дальше?

★★★

Последнее исправление: k_andy (всего исправлений: 1)

Ответ на: комментарий от ananas
(defun build-name-completion-model (names)
  (let ((model (make-instance 'gtk:list-store :column-types '("gchararray"))))
    (iter (for name in names)
	  (setf (gtk:list-store-value model (gtk:list-store-append model) 0)
		name))
    model))
k_andy ★★★
() автор топика

Проблема решена.

Оказалось, что renderer всё-таки не создавался.

(setf (gtk:entry-completion-text-column cw) 0) вызывает g_object_set, а не gtk_entry_completion_set_text_column (которая должна этот renderer создавать).

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