Commit Graph
57 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Opus 5 ea1ad8ffed UI: Tab and Shift+Tab move focus through the view hierarchy
Unlike the directional moves, this doesn't look at where anything ended up on
screen - it walks the hierarchy in the order views were added, flattening nested
groups in place. That's what makes it predictable in the layouts where "what's
to the right of this" has no good answer.

A view is a stop if it's focusable and enabled, the same test the directional
moves apply, so the two agree on what's reachable. Hidden subtrees are skipped
whole, which is what keeps a TabHolder's inactive tabs - V_GONE rather than
removed - out of the order without any special casing. Containers are gated on
visibility only, not enabled, matching Key/Touch/Axis: disabling a container
doesn't stop its children being interactive anywhere else either.

Ctrl+Tab stays with ChoiceStrip, which uses it to switch tabs.

focusMoves now holds FocusMove rather than raw keycodes, so the direction is
decided in one place while the modifiers are still around, and a held key
repeats in the direction it was originally pressed with - the synthesized repeat
has no modifiers of its own. That also retires the keycode switch in
UpdateViewHierarchy and IsScrollKey, which had no other callers.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SfY7iFJEjmRXf1XGrTs4MF
2026-08-27 20:52:20 +02:00
Henrik Rydgård d849db6be5 Buildfix, remove redundant variable 2026-05-30 19:07:59 +02:00
Henrik Rydgård 3a599c4714 Fix audio focus issue by tracking the cause of lost focus.
Fixes #21643
2026-05-06 00:06:32 +02:00
Henrik Rydgård eb476d522e Rename FocusDirection to FocusMove, make into enum class 2026-04-14 18:17:54 -06:00
Henrik Rydgård 49d3d3dc37 Settings and dev settings: Preserve the current tab. Minor UI tweaks. 2026-04-06 12:09:40 -06:00
Henrik Rydgård cfc5d74602 Some progress with server status UI 2026-03-30 11:34:19 -06:00
Henrik Rydgård c3a78724c7 Add an on-screen keyboard in the popup inputbox 2026-02-26 17:17:42 +01:00
Henrik Rydgård 990cba8e6c Fix problem with background image when rotating some dialogs 2026-02-09 14:35:32 +01:00
Henrik Rydgård 1ae76e871b Partial game-info-screen rework 2025-11-15 20:44:14 +01:00
Henrik Rydgård 9de8e75709 AnchorLayout: Allow centering separately for horizontal and vertical 2025-11-10 12:10:08 +01:00
Henrik Rydgård 980ddb152b UI fixes, add SimpleTextView (easier to reason about) 2025-11-09 08:52:20 +01:00
Henrik Rydgård b45d07d6cb Break out TabHolder from Common/UI/ViewGroup.cpp. A few new atlas images 2025-10-23 11:19:20 +02:00
Henrik Rydgård 58456ae950 Remove the UI::EventReturn return values. Makes editing the UI nicer. 2025-09-15 11:09:00 -06:00
Henrik Rydgård 4df25788fd UI: Fix focus issue, thanks NABN00B.
Fixes #20217
2025-04-07 13:39:47 +02:00
Henrik Rydgård ad260fa6a8 Implement lazy loading of tabs 2025-03-23 22:48:57 +01:00
Henrik Rydgård 4b977b43c2 TabHolder: Contents are always ViewGroups, let's enforce that. 2025-03-23 22:48:57 +01:00
Henrik Rydgård 76ce11ad2c Remove a vector while keeping settings search working. 2025-03-23 22:48:57 +01:00
Henrik Rydgård 0ba92081ed Add banner support to tab holders 2025-03-23 22:48:51 +01:00
Henrik Rydgård 8674488859 Android: Handle mouse events separately from touch events
Use the new modern events like HOVER.
2025-03-05 23:26:30 +01:00
Henrik Rydgård 863bef5f64 Give all views a bool popupStyle_, so they know the context. 2025-02-17 11:25:23 -06:00
Henrik Rydgård 88b4991753 UI fixes: Rework savedata manager a bit, default keyboard focus to Cancel in confirmation dialogs (#19771)
* Savedata manager screen: Use TabbedUIDialogScreenWithGameBackground

This fixes some minor UI issues on this screen.

* PromptScreen (used for "Are you sure?"): Default keyboard focus to Cancel

Fixes #19770
2024-12-28 10:36:05 +01:00
Henrik Rydgård e0c12c9547 More lint warning fixes 2024-10-10 10:52:45 +02:00
Henrik Rydgård 3bb74ea9ad Rework the JitCompare window to hold a list of blocks, and allow some filtering and browsing 2024-06-05 18:16:33 +02:00
Henrik Rydgård 455e28da6c Rename Point to Point2D to avoid a cocoa name clash 2024-05-29 18:52:39 +02:00
Henrik Rydgård 1129000d8f Add some asserts, small cleanup 2024-05-21 11:08:09 +02:00
Henrik Rydgård c5791764d8 Make the i18n T function use std::string_view
Buildfixes, crashfixes

One more

Android buildfix

Buildfix Qt
2024-02-12 18:44:39 +01:00
Henrik Rydgård c29f81da36 Fix issue with the collapsible sections in control mapping collapsing on every change. 2024-01-29 17:57:01 +01:00
Henrik Rydgård 7a318b46e8 Draw the line between the tabs and contents as a spacer instead of custom code. 2024-01-19 14:56:29 +01:00
Henrik Rydgård 0e03b66a95 Make vertical tabs scrollable 2024-01-19 14:56:29 +01:00
Henrik Rydgård 9cb3d03098 Add categories for control bindings 2023-12-20 16:20:26 +01:00
Henrik Rydgård 5146a2a967 Remove modifyLock_ from ViewGroup 2023-11-11 11:25:41 +01:00
Henrik Rydgård aa46d3aae3 UI: CollapsibleHeader no longer shows the open/close icon if there are no items 2023-07-23 11:11:44 +02:00
Henrik Rydgård f8b7346b8d Make the achievement lists collapsible on the main achievements screen 2023-07-16 18:13:36 +02:00
Henrik Rydgård cbd012f522 Cleanups around focus moves 2023-07-06 16:13:25 +02:00
Henrik Rydgård c27689910e Break out ScrollView from ViewGroup.h, and PopupScreens from UIScreen.h 2023-01-11 10:56:31 +01:00
Unknown W. Brackets f44852bb18 Global: Cleanup virtual/override specifiers.
Also missing virtual destructors, hidden non-overrides, etc.
2022-12-10 21:13:36 -08:00
Henrik Rydgård 3e7f7ad8d7 Add CSS-style padding support to LinearLayout. Use to improve the look 2022-12-08 00:01:46 +01:00
Henrik Rydgård 82680633e7 More usability tweaks 2022-12-07 10:27:02 +01:00
Henrik Rydgård b938992da4 Add a new centering capability to AnchorLayout 2022-12-03 19:13:21 +01:00
Henrik Rydgård 25e8f8385e Redo the control UI screen layout, slightly update the look 2022-11-30 10:56:29 +01:00
Henrik Rydgård 20a337f25b Initialization cleanup (no effect) 2022-11-30 10:15:36 +01:00
Henrik Rydgård 0a3d78221e Fix drag-background-through-buttons problem by adding "touch exclusive" mode to viewgroups.
Not using universally because I don't want to debug all the issues...
2022-11-27 16:16:18 +01:00
iota97 561870dc25 Merge item and button style, remove hightlighed and few other fixes 2022-02-14 13:57:22 +01:00
Unknown W. Brackets 49c64e12d1 UI: Add a way to disable tabs in tab strips. 2021-10-19 10:01:52 -07:00
Unknown W. Brackets 931ba43216 UI: Remove scroll to top on size change.
It wasn't actually used anywhere, and I don't see a reason for it now.
2021-09-27 23:39:33 -07:00
Unknown W. Brackets fc78b408b2 UI: Have scroll views directly remember their pos.
Kinda like checkboxes, cleaner this way.
2021-09-27 23:25:41 -07:00
iota97 c94e9ad73c Support ScrollView for focus position 2021-09-10 02:06:51 +02:00
Unknown W. Brackets e9ebd86439 UI: Fix scrollview focus scroll before relayout.
Need to use the position of the bounds as of last layout, not the new
desired position.
2021-08-29 17:35:58 -07:00
Unknown W. Brackets cf22268bc1 UI: Fix grids in ScrollViews and adjust gravity. 2021-08-29 14:10:14 -07:00
Unknown W. Brackets b52a495b96 UI: Handle focus on page up/down.
This moves keyboard focus along with paging, but it also only responds to
paging when already focused inside the scroll view.
2021-08-08 14:46:05 -07:00