Bug 486699

Summary: KDE font anti-aliasing range exclusion checkbox is fake-on when no font sizes are excluded from anti aliasing
Product: [Applications] systemsettings Reporter: littlefroggieboy
Component: kcm_fontsAssignee: Plasma Bugs List <plasma-bugs-null>
Status: RESOLVED FIXED    
Severity: minor CC: me, nate
Priority: NOR    
Version First Reported In: 6.0.4   
Target Milestone: ---   
Platform: openSUSE   
OS: Linux   
Latest Commit: Version Fixed/Implemented In: 6.0.5
Sentry Crash Report:
Attachments: Font settings panel exhibiting the bug with a red circle around the affected setting.

Description littlefroggieboy 2024-05-07 04:08:24 UTC
Created attachment 169256 [details]
Font settings panel exhibiting the bug with a red circle around the affected setting.

SUMMARY
Not sure if this is a duplicate, but I searched and saw no open issues about this specific UI flaw. Title is self-explanatory to an extent. When setting "Exclude range from anti-aliasing" to no in the settings and applying the setting, then quitting the settings app with the close button, and reopening it, that setting will appear on in the GUI, but not actually be on as evidenced by my text being anti-aliased.

STEPS TO REPRODUCE
1. Uncheck the exclude range from anti-aliasing checkbox and apply
2. Close settings
3. Open settings

OBSERVED RESULT
UI is wrong about the aforementioned setting, and displays a checkmark

EXPECTED RESULT
There is no checkmark, as the setting is disabled.

SOFTWARE/OS VERSIONS
KDE Plasma Version: 6.0.4
KDE Frameworks Version: 6.1.0
Qt Version: 6.7.0
Graphical platform: Wayland
Linux Version: 6.8.7-1-default (64-bit Arm)

ADDITIONAL INFORMATION
Non-Wayland specific, happens in Xorg too, but was noticed first in Wayland. Issue spotted in a virtualized environment for Apple SIlicon. 200% display scaling set, and native display density set in the hypervisor. Issue also occurs at 100% scaling though. Setting applies if you disable the fake-on checkbox state, click apply, then enable, and apply, at which point the on-state for the checkbox is not a lie. Clearing the checkmark and applying disables the setting, but closing and reopening settings, or relogging the Plasma session will exhibit the UI flaw. I remember this possibly happening in some Plasma 5 version too but no guarantees.
Comment 1 Nate Graham 2024-05-07 20:16:39 UTC
Are you saying that for you, when you first opened the Fonts page, the checkbox next to "Exclude fonts from anti-aliasing" was already checked? Because that's not what's supposed to be happening.
Comment 2 littlefroggieboy 2024-05-07 21:19:57 UTC
(In reply to Nate Graham from comment #1)
> Are you saying that for you, when you first opened the Fonts page, the
> checkbox next to "Exclude fonts from anti-aliasing" was already checked?
> Because that's not what's supposed to be happening.

That's what's happening, exactly. And it keeps doing that even when I disable the setting, apply it, close the settings, and open them again.
Comment 3 Nate Graham 2024-05-07 21:22:43 UTC
That's unexpected. What happens when you click the "Defaults" button at the bottom of the page?
Comment 4 littlefroggieboy 2024-05-07 21:29:05 UTC
(In reply to Nate Graham from comment #3)
> That's unexpected. What happens when you click the "Defaults" button at the
> bottom of the page?

Clears the checkbox, this part is expected. And it enables the apply button. I click the apply button, close the settings, open the settings...
That checkbox is checked. Again. As if I didn't do anything!
Comment 5 littlefroggieboy 2024-05-07 21:36:42 UTC
If I'm gonna guess it's just not reading the actual setting at all and showing the checkbox as checked in the UI because for some reason that's the UI code's (undefined) behavior when failing to read the actual config value behind this widget.
Comment 6 Nate Graham 2024-05-09 19:20:12 UTC
Do you have the ability to test a patch? I see an issue in the code that *may* explain this, but I can't be sure because I can't reproduce the issue myself.
Comment 7 littlefroggieboy 2024-05-09 20:07:13 UTC
(In reply to Nate Graham from comment #6)
> Do you have the ability to test a patch? I see an issue in the code that
> *may* explain this, but I can't be sure because I can't reproduce the issue
> myself.

I'm running in an OpenSuSE Tumbleweed VM for Arm, I'll try and download the source for Plasma and compile a patch but the fact that you say this means I may have to flag down SuSE and see if they're doing anything to the DE that will cause this. Either that or it's VMWare SVGA's fault because this is graphics-related and it's unfixable VM malarkey
Comment 8 Nate Graham 2024-05-09 20:15:18 UTC
https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/4301 may fix it. If you could test that, it would be lovely.

If you can't compile a patch locally, then even just changing the main.qml file of the Fonts KCM installed on your system to manually apply those changes would do it, since QML is interpreted.
Comment 9 ratijas 2024-05-14 18:27:37 UTC
Can't reproduce, even if I modify one or both values of the range.
Comment 10 Nate Graham 2024-05-14 18:51:41 UTC
Git commit 6315e625c17227edf5b7b1e6b04fb70e8b384097 by Nate Graham.
Committed on 14/05/2024 at 18:35.
Pushed by ngraham into branch 'master'.

kcm/fonts: use correct signal handlers for UI controls

Using the on[Thing]Changed() versions can cause loops and unexpected
state changes, based on how the backend may be implemented. Instead use
the versions that only fire on explicit user interaction.

M  +11   -7    kcms/fonts/ui/main.qml

https://invent.kde.org/plasma/plasma-workspace/-/commit/6315e625c17227edf5b7b1e6b04fb70e8b384097
Comment 11 Bug Janitor Service 2024-05-14 18:53:05 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/4321
Comment 12 Nate Graham 2024-05-14 19:08:20 UTC
Git commit 18adccdede9e659ce7a166787641f7a4d030b9f1 by Nate Graham.
Committed on 14/05/2024 at 18:52.
Pushed by ngraham into branch 'Plasma/6.0'.

kcm/fonts: use correct signal handlers for UI controls

Using the on[Thing]Changed() versions can cause loops and unexpected
state changes, based on how the backend may be implemented. Instead use
the versions that only fire on explicit user interaction.


(cherry picked from commit 6315e625c17227edf5b7b1e6b04fb70e8b384097)

M  +11   -7    kcms/fonts/ui/main.qml

https://invent.kde.org/plasma/plasma-workspace/-/commit/18adccdede9e659ce7a166787641f7a4d030b9f1
Comment 13 Nate Graham 2024-05-14 19:55:55 UTC
It was a somewhat speculative fix, but I'm hoping that fixes the issue for Plasma 6.0.5. littlefroggieboy, would you mind testing and reporting back once you have 6.0.5 installed? It's scheduled to be released by KDE in a week.

Thanks!