bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#75171: 30.0.50; Checklist widget inside a group does not initialize


From: Al Haji-Ali
Subject: bug#75171: 30.0.50; Checklist widget inside a group does not initialize correctly
Date: Sun, 29 Dec 2024 08:33:44 +0000

The following function creates four widgets (two radio button lists and two 
checklists) inside a group. All lists have an initial value, while the group 
has a nil value. Strangely, the radio buttons get initialized correctly 
(selecting the correct button based on their value), but the checkboxes do not 
(all boxes are unchecked regardless of the value). Removing the group results 
in correct initialization.

--8<---------------cut here---------------start------------->8---
(defun widget-test ()
  (let ((items '((item :format "%[One%] " :value 1)
                 (item :format "%[Two%] " :value 2)
                 (item :format "%[Three%] " :value 3))))
    (widget-create
     'group
     (append '(radio-button-choice
               :inline t
               :format "Inline radio:\n%v\n"
               :value 2)
             items)
     (append '(radio-button-choice
               :format "Not inline radio:\n%v\n"
               :value 2)
             items)
     (append '(checklist
               :inline t
               :format "Inline checks:\n%v\n"
               :value (1 2))
             items)
     (append '(checklist
               :format "Not inline checks:\n%v\n"
               :value (1 2))
             items)))
  (widget-setup))
--8<---------------cut here---------------end--------------->8---


If this is unintended behaviour, I managed to fix the inline version of the 
checklists with this advice

--8<---------------cut here---------------start------------->8---
(advice-add 'widget-checklist-match-inline
            :around
            (lambda (old-fn wid val)
              (when val
                (funcall old-fn wid val))))
--8<---------------cut here---------------end--------------->8---

The non-inline version probably requires a fix in `widget-checklist-match`, but 
I can't make out the logic in this function (it seems to return non-nil when 
not matching?!).

If it is intended behaviour, how can I correctly set the value of a checklist? 
and why is there a discrepancy between radio buttons and check lists?

-- Al





reply via email to

[Prev in Thread] Current Thread [Next in Thread]