GNU bug report logs - #75171
30.0.50; Checklist widget inside a group does not initialize correctly

Previous Next

Package: emacs;

Reported by: Al Haji-Ali <abdo.haji.ali <at> gmail.com>

Date: Sun, 29 Dec 2024 08:41:02 UTC

Severity: normal

Tags: notabug

Found in version 30.0.50

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Mauro Aranda <maurooaranda <at> gmail.com>
To: Al Haji-Ali <abdo.haji.ali <at> gmail.com>, 75171 <at> debbugs.gnu.org
Subject: bug#75171: 30.0.50; Checklist widget inside a group does not initialize correctly
Date: Mon, 6 Jan 2025 12:14:36 -0300
Mauro Aranda <maurooaranda <at> gmail.com> writes:

> Al Haji-Ali <abdo.haji.ali <at> gmail.com> writes:
>
>> On 02/01/2025, Mauro Aranda wrote:
>>
>>> Al Haji-Ali <abdo.haji.ali <at> gmail.com> writes:
>>> This is intended behavior, AFAIU.  The parent can override values for
>>> the children, and that way we can recreate widgets with new values just
>>> by changing the values of the parent.
>>
>> I was aware of this behaviour for the group, but I didn't twig the
>> consequence on a checklist.
>>
>> I have to say that I find it a bit counter-intuitive. Also the fact
>> that there is no way to set the value of a checklist without repeating
>> it in the group is somewhat awkward (certainly it will complicate my
>> implementation)
>
> Note that you don't necessarily need to repeat it in the checklist
> widget.  In my example, you only need to pass the :value in group:
>
> (defun widget-test ()
>   (let ((items '((item :format "%[One%] " :value 1)
>                  (item :format "%[Two%] " :value 2)
>                  (item :format "%[Three%] " :value 3))))
>     (widget-create
>      'group
>      :value '(2 (1 2))
>      (append '(radio-button-choice
>                :format "Not inline radio:\n%v\n")
>              items)
>      (append '(checklist
>                :format "Not inline checks:\n%v\n")
>              items)))
>   (widget-setup))
>
> When created, radio-button-choice will get its :value set to 2 and
> checklist will get it set to (1 2).
>
>> and a bit inconsistent since setting the value of the
>> checklist after the group creation would override the value of the
>> group. A fix, or a some way, that would prevents the group from
>> overriding the values of the children would be useful, IMO.
>>
>> With that being said, this issue should probably be closed as "not a
>> bug".
>
> I'd like to take some time to study this and see if there's a way to
> improve the situation.

Making the group widget create its children with their default
values is easy, by testing if it has a explicit nil value or not.  But
since it has worked this way forever, I wouldn't suggest changing it.

I think that specifying the :value in the group widget is the way that
the group widget it's supposed to work.  There are ways to derive a
widget from it that doesn't enforce it, so I'm inclined to mark this as
notabug.





This bug report was last modified 121 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.