| Summary: | state-rows wrong behaviour | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | inger <inger> |
| Component: | alterator-browser-qt | Assignee: | Sergey V Turchin <zerg> |
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
| Severity: | normal | ||
| Priority: | P2 | CC: | inger |
| Version: | unstable | ||
| Hardware: | all | ||
| OS: | Linux | ||
(In reply to comment #0) > Кроме того: для того чтобы можно было использовать этот виджет в alterator-pkg > мне явно не хватает current (чтобы узнать какой элемент был кликнут). При множественном выборе может быть "кликнуто" сразу несколько элементов, поэтому для *listbox c множественным выбором -- current-rows, а с единичным -- current state-rows исправил, но обрати на вывод от
(let ((rows (make-attribute 'rows)))
(document:id c
(clb rows '("a" #t "b" #f "c" #t)
(when selected
(format #t "current-rows=~S~%" (c current-rows))
(format #t "state-rows=~S~%" (c state-rows))
))))
ставим исправленный browser
все выделяем и начинаем снимать выделение по порядку сверху вниз
alListBox::postData< (state-rows . ( #f #t #t)) (current-rows . ( 1 2))>
current-rows=(1 2)
state-rows=(#f #t #t)
alListBox::postData< (state-rows . ( #f #f #t)) (current-rows . ( 2))>
current-rows=(2)
state-rows=(#f #f #t)
alListBox::postData< (state-rows . ( #f #f #f)) (current-rows . ())>
current-rows=(2)
state-rows=(#f #f #f)
последний current-rows остается "2"
alterator-browser-qt-2.9.83-alt1 |
в checklistbox state-rows будучи вызванным в обработчике 'selected' возвращает предыдущее состояние, а не текущее. (define clb (make-widget "checklistbox")) (let ((rows (make-attribute 'rows))) (document:id c (clb rows '("a" #t "b" #f "c" #t) (when selected (let ((slist (c state-rows))) (format #t "slist=~S~%" (c state-rows))))))) --- При первом же клике печатается: slist=(#t #f #t) Что соответствует предыдущему состоянию а не текущему. Кроме того: для того чтобы можно было использовать этот виджет в alterator-pkg мне явно не хватает current (чтобы узнать какой элемент был кликнут).