Bug 494086 - GTK3 spinbox negative button is an X, instead of a -
Summary: GTK3 spinbox negative button is an X, instead of a -
Status: RESOLVED FIXED
Alias: None
Product: Breeze
Classification: Plasma
Component: Icons (show other bugs)
Version: unspecified
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: visual-design
URL: https://gitlab.gnome.org/GNOME/gtk/-/...
Keywords:
: 495663 (view as bug list)
Depends on:
Blocks:
 
Reported: 2024-10-04 04:22 UTC by Mors Mortium
Modified: 2025-03-14 16:31 UTC (History)
6 users (show)

See Also:
Latest Commit:
Version Fixed In: GTK 3.24.44
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mors Mortium 2024-10-04 04:22:09 UTC
***
If you're not sure this is actually a bug, instead post about it at https://discuss.kde.org

If you're reporting a crash, attach a backtrace with debug symbols; see https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports

Please remove this comment after reading and before submitting - thanks!
***

SUMMARY
As title says.

STEPS TO REPRODUCE
1. Have Breeze (or Breeze Dark) as your icon theme
2. Open a GTK3 application, that has a spinbutton widget (number input with -+ buttons)
3. Look at the widget

OBSERVED RESULT
The widget has an X instead of a - for the icon

EXPECTED RESULT
The decrease value icon is still a -, as it was previously

SOFTWARE/OS VERSIONS
Windows: 
macOS: 
(available in the Info Center app, or by running `kinfo` in a terminal window)
Linux/KDE Plasma: 
KDE Plasma Version: 6.1.5
KDE Frameworks Version: 6.6.0
Qt Version: 6.7.3

ADDITIONAL INFORMATION
 I use Artix (based on Arch), fully upgraded. With downgrade I see that version 6.6.0-1 shows the bug, but 6.5.0-1 does not. It happens with new users and switching to another icon theme also fixes it (papirus was tested). GTK4 is not affected.
Comment 1 Nate Graham 2024-10-11 19:40:25 UTC
This is a bug in GTK, which uses that icon inappropriately. So when we changed it in the Breeze theme, it made spinboxes look wrong. In GTK4 they fixed this and made their spinboxes use a different icon that isn't also used for removing list items.

Can you report this to GTK and ask them to backport that change to GTK 3 as well? Thanks!
Comment 2 Nate Graham 2024-11-01 14:24:32 UTC
*** Bug 495663 has been marked as a duplicate of this bug. ***
Comment 3 Nate Graham 2024-11-21 19:07:42 UTC
I've gone ahead and submitted a GTK patch to fix this at https://gitlab.gnome.org/GNOME/gtk/-/issues/7080.
Comment 4 graham.keeth@gmail.com 2025-02-27 01:19:40 UTC
Unfortunately I still see the wrong icon (X instead of minus) with gtk3 1:3.24.48 (and plasma 6.3.1). The GTK maintainer on the linked issue indicated that this version of gtk should contain the fix (ref https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/7954)

Is it okay to comment on this bug or should I open a new bug? Is there any other information that would be helpful for me to provide?
Comment 5 graham.keeth@gmail.com 2025-03-01 21:14:13 UTC
I debugged this further, and I think the GTK fix is working correctly; the issue is now in breeze-icons. Here is the situation:

After Nate's fix in GTK, GTK looks for the following icons for the spinbox decrease button, in this order:
1. value-decrease-symbolic (explicit)
2. list-remove-symbolic (explicit)

My understanding is that if it doesn't find either of those, it will eventually start looking for the non-symbolic versions of those icons, by chopping off the last term in the name:
3. value-decrease
4. list-remove

I wasn't actually able to check this non-symbolic fallback behavior. It seems to fall back to some other icons first, including alternate-size versions of 1 and 2, if those are available in the theme. I am noting this because I saw it in my debugging, but I don't think it's causing an immediate issue. What is relevant is that if icon #1 is not found, it looks for icon #2 before checking for the non-symbolic versions.

The reason for the issue is that breeze-icons 6.11.0 provides these three icons:
- actions/16/value-decrease.svg
- actions/16/list-remove.svg
- actions/16/list-remove-symbolic.svg (symlinked to list-remove)

There is no value-decrease-symbolic icon included. So when value-decrease-symbolic isn't found, the next icon in order is list-remove-symbolic, which is present, and therefore we get the "X" icon instead of the "-" icon.

I think the best solution is to symlink value-decrease-symbolic.svg to value-decrease.svg, at least for the 16px size. Probably also worth doing for 22px; I don't know what uses that icon size but the same -symbolic discrepancy exists there. 

I'd be happy to submit a merge request to fix this if I my proposal seems reasonable?
Comment 6 graham.keeth@gmail.com 2025-03-01 23:20:57 UTC
Git commit 90cb058f3d5720d15d6c9dd9ec0a0ef14c11406a by Graham Keeth.
Committed on 01/03/2025 at 21:41.
Pushed by ngraham into branch 'master'.

Add -symbolic symlinks for value-decrease/increase

In combination with
https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/7954 this gives
spinboxes in GTK applications the correct "-" icon, instead of the
fallback "X" icon from list-remove.

See https://bugs.kde.org/show_bug.cgi?id=494086

A  +1    -0    icons/actions/16/value-decrease-symbolic.svg
A  +1    -0    icons/actions/16/value-increase-symbolic.svg
A  +1    -0    icons/actions/22/value-decrease-symbolic.svg
A  +1    -0    icons/actions/22/value-increase-symbolic.svg

https://invent.kde.org/frameworks/breeze-icons/-/commit/90cb058f3d5720d15d6c9dd9ec0a0ef14c11406a