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

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

bug#69942: 30.0.50; Fontification of radio-button widget labels


From: Stephen Berman
Subject: bug#69942: 30.0.50; Fontification of radio-button widget labels
Date: Fri, 26 Apr 2024 14:47:26 +0200
User-agent: Gnus/5.13 (Gnus v5.13)

On Sun, 21 Apr 2024 21:45:21 +0200 Stephen Berman <stephen.berman@gmx.net> 
wrote:

> On Thu, 18 Apr 2024 15:37:58 +0200 Stephen Berman <stephen.berman@gmx.net> 
> wrote:
>
>> On Thu, 18 Apr 2024 07:07:43 -0300 Mauro Aranda <maurooaranda@gmail.com> 
>> wrote:
>>
>>> Eli Zaretskii <eliz@gnu.org> writes:
>>>
>>>>> Date: Mon, 8 Apr 2024 07:58:44 -0300
>>>>> Cc: 69942@debbugs.gnu.org
>>>>> From: Mauro Aranda <maurooaranda@gmail.com>
>>>>>
>>>>> On 6/4/24 06:02, Eli Zaretskii wrote:
>>>>>  >> From: Stephen Berman <stephen.berman@gmx.net>
>>>>>  >> Cc: Eli Zaretskii <eliz@gnu.org>, 69942@debbugs.gnu.org
>>>>>  >> Date: Mon, 01 Apr 2024 17:21:27 +0200
>>>>>  >>
>>>>>  >> On Mon, 25 Mar 2024 01:40:36 +0100 Stephen Berman
>>>>> <stephen.berman@gmx.net> wrote:
>>>>>  >>
>>>>>  >>> Ok, I've gotten further with implementing disinguishing by faces
>>>>>  >>> selected (chosen) and unselected radio buttons in radio-button-choice
>>>>>  >>> widgets and check boxes in checklist widgets, see the attached patch.
>>>>>  >>> Initial tests seem ok, but it definitely needs more testing.
>>>>>  >>
>>>>>  >> Any comments on this patch for using a widget-unselected face?  I have
>>>>>  >> been detained from further testing this past week, but can now resume.
>>>>>  >
>>>>>  > Mauro, any further comments?
>>>>>
>>>>> Hi Eli and Stephen,
>>>>>
>>>>> Please forgive me, for the past 2 weeks I haven't been able to do any
>>>>> computer stuff.  If it's OK, please give me until the weekend so I
>>>>> can catch up with this and the other 2 bug reports by Stephen.
>>>>
>>>> Mauro, were you able to find time to look into this and the other 2
>>>> bugs?
>>>
>>> I have, just now.  The patch looks good to me.  It'll be great if
>>> Stephen can add some documentation to the manual, so it stays updated.
>>> If not, I can do that in a few days.
>>
>> Sure, I'll add documentation and post it here for approval before
>> pushing the changes.
>
> I've encountered some problems with the patch.  One is that it breaks
> the display of all face attributes in the customize-face buffer.  I've
> determined the part of the patch that triggers this, though I haven't
> yet figured out just why this bit of code breaks the display.  Also, it
> appears that the widget-unselected face does not completely replace
> widget-inactive where it's intended to do so, but I need to do more
> testing and debugging here to find out why.  Until I've fixed these
> issues the patch is not suitable for installing, so I'm also holding off
> with the accompanying documentation.  (But in preparation for the
> documentation I looked more closely at the Widget manual and found
> several typos and other issues, for which I opened bug#70502.)

The breakage in displaying all face attributes in the customize-face
buffer was caused by the invocation of `(widget-specify-selected child)'
in widget-checklist-add-item in the cond-clause satisfying
`(widget-inline-p type t)'.  I still don't understand why it has this
effect, and I have to admit that I don't understand what an inline
widget is.  But simply omitting the invocation of
`(widget-specify-selected child)' at this point in the patch does avoid
the customize-face breakage and I have not noticed any problems due to
this omission.

As for the problematic interaction between the widget-unselected and
widget-inactive faces, this seems to have been due to my having copied
most of the definition of widget-specify-unselected from that of
widget-specify-inactive, and specifically, copying the overlay priority.
In the attached patch, widget-specify-unselected now uses a lower
overlay priority than the one used in widget-specify-inactive, and in my
tests this yields the desired results: the labels of active checkboxes
and radio-buttons have widget-unselected face but when these widgets are
deactivated, the labels have widget-inactive face.

Another change I've made in the attached patch is to have the default
value of widget-unselected face inherit from widget-inactive instead of
inheriting from shadow face, like widget-inactive does by default.  This
way, if a user customizes widget-inactive, that will also apply by
default to widget-unselected, thus retaining the current default widget
UI where the labels of checkboxes and radio-buttons have widget-inactive
face.  (Thus, the "desired results" in the preceding paragraph are only
visible when widget-unselected face is customized to differ from
widget-unselected face.)

Finally, regarding documentation of widget-unselected face in the Widget
manual, I think it would be helpful for the documentation to mention the
use case that motivated introducing it (following Mauro's suggestion to
use a face instead of a defcustom), namely, to visually distinguish the
labels of unselected and inactive widgets.  Here is what I suggest:

@deffn Face widget-unselected
Face used for unselected widgets.  This face is also used on the text
labels of radio-button and checkbox widgets.

The default value inherits @code{widget-inactive} face.  If you want to
visually distinguish the labels of unselected active radio-button or
checkbox widgets from the labels of unselected inactive widgets,
customize this face to a non-default value.
@end deffn

Since the recent widget.texi changes that include documenting
widget-inactive face have not yet been merged to master, I haven't
included the propopsed documentaton of widget-unselected in the attached
patch, but if approved, will of course add it after the merge.

Steve Berman

Attachment: txtsm_I6388pu.txt
Description: widget-unselected patch


reply via email to

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