Skip to content

Replace checkboxes with Radio buttons#14431

Merged
Frenzie merged 6 commits into
koreader:masterfrom
Commodore64user:radio-buttons
Oct 14, 2025
Merged

Replace checkboxes with Radio buttons#14431
Frenzie merged 6 commits into
koreader:masterfrom
Commodore64user:radio-buttons

Conversation

@Commodore64user

@Commodore64user Commodore64user commented Oct 7, 2025

Copy link
Copy Markdown
Member

what's new

  • Standardise the use of radio buttons in menu item definitions across the UI. By consistently setting the radio = true property, the UI will correctly indicate mutually exclusive menu options, improving user experience and code maintainability.

in short, checkboxes are now exclusively on/off switches and radio buttons represent multiple mutually-exclusive, one-option-must-be-active settings.

related issues


This change is Reviewable

@mergen3107

Copy link
Copy Markdown
Contributor

Here goes my 100% support! :D thank you

@hius07

hius07 commented Oct 8, 2025

Copy link
Copy Markdown
Member

No strong opinion.
I used to see the checkmarks where it's obvious (like Display mode). On the other hand, I like standardization.

Anyway, if the idea is accepted, more places to change: Gesture manager action list - Default, Pass through, Nothing (upper 3 items).

I'd put the radio = true, line right near the checked line, the callback can be long and the radio line goes too far.

@hius07

hius07 commented Oct 8, 2025

Copy link
Copy Markdown
Member

Font list is a discussable question.

@Frenzie

Frenzie commented Oct 8, 2025

Copy link
Copy Markdown
Member

Mind, aside from what's mentioned in #8167 about exclusivity not being a user concern but a code concern, it's also uglier on eink with regard to refreshes and ghosting. The problem can be mostly avoided by using something less filled like ⦿ but that feels like it's not really indicating filled out or selected, but the fully filled one also feels a bit heavy.

Screenshot_20251008_091311 Screenshot_20251008_091252

@Commodore64user

Copy link
Copy Markdown
Member Author

what is the problem with changing the font ones as well?

@poire-z

poire-z commented Oct 8, 2025

Copy link
Copy Markdown
Contributor

Just what @Frenzie mentionned: our square checked checkboxes looks a lot nicer than the big solid black rounded radio boxes.

@Commodore64user

Copy link
Copy Markdown
Member Author

so the only concern is that the black-filled circle is a little harder to clear than the much thiner ticks? am I reading that right?

couldn't the filling be a little less black then, a few shades less? don't we have like 50 shades of grey...

@Frenzie

Frenzie commented Oct 8, 2025

Copy link
Copy Markdown
Member

Gray is even worse. 😄 (Somewhere between more flashing and not showing, depending on the device and what you can live with.)

@mergen3107

mergen3107 commented Oct 8, 2025

Copy link
Copy Markdown
Contributor

I vote for complete uniformity of the UX, with radio buttons in the font list as well.

I don't see that list too many times anyway, because I use profiles.

@Frenzie

Frenzie commented Oct 8, 2025

Copy link
Copy Markdown
Member

I think what @hius07 means is that it's not really a radiobutton if you can't see the activated option.

There's also the bullseye btw: ◎

@mergen3107

Copy link
Copy Markdown
Contributor

Well, the list is still a list, the fact that it is divided into 63782 pages is unrelated to how a single selection is represented :D

On the contrary, when I see a checkmark next to any item in any list, I briefly involuntarily think "what other items are selected?" and I start scrolling through the whole list (like in Dispatcher items). If I saw a radio button, then that's it! The only selected option.

You scroll through pages with a few fonts on each, yes, but still stay in the same "list context" and ultimately you can only choose one font in that font list. Other options like monospace font override are hidden in their own menus, so font list is ready for radio buttons.

@mergen3107

Copy link
Copy Markdown
Contributor

Here is a real life hardware example of a radio button in action.

image

In our lab we have those vacuum gate vales. They operate under 100 psi pressure of compressed air.

They are normally closed (when not pressurized). White mark shows up in the "Closed" window - as in the photo.

When we command it to open, white mark moves to the "Open" window.

When we have a failure, it is neither - this is because the pressure is somewhere between 0 and 99 psi - and this is by design! Then white mark gets stuck between those "Open" and "Closed" windows, and this is a red alert to us as operators (because looking at this status radio buttons is in the routine operation checklist) - we immediately go and check what's wrong.

@Commodore64user

Copy link
Copy Markdown
Member Author

I think what @hius07 means is that it's not really a radiobutton if you can't see the activated option.

There's also the bullseye btw: ◎

That ostensibly sounds like a rather weak argument; the boxes and tick do the very same thing... ninety-nine unticked boxes and one Lonesome Dove-tick

@Frenzie

Frenzie commented Oct 8, 2025

Copy link
Copy Markdown
Member

That ostensibly sounds like a rather weak argument; the boxes and tick do the very same thing... ninety-nine unticked boxes and one Lonesome Dove-tick

It's only a guess. I could be wrong about it. I'm not in favor of treating the font list as an exception in any case.

@hius07

hius07 commented Oct 9, 2025

Copy link
Copy Markdown
Member

By now, I think I totally support this PR, everywhere.

(Not a style guide, but Kindle native interface uses our radiobutton, exactly)

@Commodore64user Commodore64user marked this pull request as ready for review October 9, 2025 12:46
@Commodore64user

Copy link
Copy Markdown
Member Author

video killed the radio star?

@Frenzie Frenzie added this to the 2025.10 milestone Oct 14, 2025

@Frenzie Frenzie left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm, didn't test ;-)

@Commodore64user

Copy link
Copy Markdown
Member Author

@poire-z review time

@poire-z

poire-z commented Oct 14, 2025

Copy link
Copy Markdown
Contributor

I don't like it for the font list...
But KOReader being all about anal-retentiveness (aka consistency), have it you all your way :)

@Frenzie Frenzie merged commit 92effcf into koreader:master Oct 14, 2025
4 checks passed
@mergen3107

Copy link
Copy Markdown
Contributor

@Commodore64user
image

Found other checkboxes worth being replaced by radio buttons.
Group None/Auto, and a group with those four options below (as well as the list inside Obsolete). Besides, I think the horizontal bar above Obsolete is not needed because selection of None/Auto determines if either of the four items will be selected.

@mergen3107

Copy link
Copy Markdown
Contributor

Also, Top menu - Gear - Screen - E-ink settings - Full refresh rate:

image

@Frenzie

Frenzie commented Oct 20, 2025

Copy link
Copy Markdown
Member

Besides, I think the horizontal bar above Obsolete is not needed because selection of None/Auto determines if either of the four items will be selected.

It's needed to say that it's separate and not a logical part of it. It's never been about grouping or separating radio buttons specifically.

@mergen3107

Copy link
Copy Markdown
Contributor

Then I am confused. Because the horizontal line usually meant (I thought) either mutually exclusive groups or unrelated (at least not really) groups (like fonts themselves vs fallback fonts.

Those four styles will act as a single group of radio buttons - as soon as any one of those four is selected, the rest are unselected. I understand that the Obsolete styles are not suggested to be used frequently because they are legacy, but the horizontal line contradicts its UX nature in other menus here.

Maybe Obsolete can be taken into parentheses instead?

@Commodore64user

Copy link
Copy Markdown
Member Author

The refresh one would need a slight adjustment to make sense, i don’t believe there are any radio buttons that are long press-able for more settings (i.e., custom ones)

That style one, is a bit of a mess as well...

@Commodore64user Commodore64user deleted the radio-buttons branch October 20, 2025 13:22
@Frenzie

Frenzie commented Oct 20, 2025

Copy link
Copy Markdown
Member

fonts themselves vs fallback fonts.

But it's exactly like that. Not obsolete vs obsolete.

Maybe Obsolete can be taken into parentheses instead?

Random parentheses would be out of place and draw attention to themselves.

@mergen3107

Copy link
Copy Markdown
Contributor

Like random horizontal line as well :D

@offset-torque

Copy link
Copy Markdown

Came here to thank for this @Commodore64user
Finally proper radio buttons. They look chonky on screenshots but perfect weight on e-ink.

0xstillb pushed a commit to 0xstillb/koreader-thai that referenced this pull request May 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Confusing GUI elements (broken UX)

6 participants