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

From: Eli Zaretskii <[email-masked]>
Date: Sat, 18 Jan 2025 11:39:14 +0200

tags 75171 notabug
close 75171
thanks

> Date: Mon, 6 Jan 2025 12:14:36 -0300
> From: Mauro Aranda <[email-masked]>
> 
> Mauro Aranda <[email-masked]> writes:
> 
>  > Al Haji-Ali <[email-masked]> writes:
>  >
>  >> On 02/01/2025, Mauro Aranda wrote:
>  >>
>  >>> Al Haji-Ali <[email-masked]> 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.

No further comments, so I'm now closing this bug as not-a-bug.