Commit Graph
87 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 02e9deb232 Fix some input behavior that got lost in the previous commits. 2026-06-24 21:48:44 +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 c3a78724c7 Add an on-screen keyboard in the popup inputbox 2026-02-26 17:17:42 +01:00
Henrik Rydgård 8eeb64c9dc Fix a bug in gridlayout column count computation, fix layout problem on savestate popups. 2026-02-25 14:28:57 +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 aa17599f66 Make things more consistent in the no-present case 2026-02-08 10:13:34 +01:00
Henrik Rydgård d6d2c24e24 Fix the toggle touch controls input (properly this time) 2026-02-05 09:44:42 +01:00
Henrik Rydgård 481d0fd18c Switch TouchInputFlags to enum class, fix some minor UI issues
Scroll views now only wheel-scroll if the mouse is hovering over them.
2025-12-19 11:38:56 +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 bf5e524243 Add multi-font support to the final text-rendering backend (SDL_ttf) 2025-11-09 08:52:21 +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 e78341b822 Hide theme behind an accessor (so we can expose it only as const) 2025-09-15 09:31:18 -06:00
Henrik Rydgård 91bf4d5b5c Correct some log categories, add UI category, some warning fixes 2025-04-09 13:45:21 +02:00
Henrik Rydgård 4df25788fd UI: Fix focus issue, thanks NABN00B.
Fixes #20217
2025-04-07 13:39:47 +02:00
Henrik Rydgård 116f8cf3af Implement resetting from a popup menu on the pause menu. 2025-03-28 14:31:01 +01: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 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
Herman Semenov 45429bcd85 [Common/Data/File/Input/Net/Serialize/System/UI] Using for based loop C++17 and replaced on structured binding map C++17 2024-09-17 17:42:08 +02:00
Henrik Rydgård e01ca5b057 Logging API change (refactor) (#19324)
* Rename LogType to Log

* Explicitly use the Log:: enum when logging. Allows for autocomplete when editing.

* Mac/ARM64 buildfix

* Do the same with the hle result log macros

* Rename the log names to mixed case while at it.

* iOS buildfix

* Qt buildfix attempt, ARM32 buildfix
2024-07-14 14:42:59 +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 a094637ab1 Remove left-behind debug code 2023-12-28 10:46:41 +01:00
Henrik Rydgård 9cb3d03098 Add categories for control bindings 2023-12-20 16:20:26 +01:00
Henrik Rydgård 6e369e5188 Add play/pause button to the bottom right of the pause screen 2023-12-11 13:56:16 +01:00
Henrik Rydgård 5146a2a967 Remove modifyLock_ from ViewGroup 2023-11-11 11:25:41 +01:00
Henrik Rydgård e0c0cb9a6d Change loops to the shorter form. 2023-11-11 10:55:45 +01:00
Henrik Rydgård 01191ff23a Extract ApplyAnchorLayoutParams from the anchor viewgroup 2023-08-01 00:28:54 +02: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 7eb1bfe1aa Spacing default 0.0 in collapsible sections, set spacing for achievements a little higher 2023-07-16 18:23:43 +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 f27850ec1d Minor cleanup in MoveFocus, set tags on screen roots for debugging 2023-07-06 16:34:54 +02:00
Henrik Rydgård cbd012f522 Cleanups around focus moves 2023-07-06 16:13:25 +02:00
Unknown W. Brackets ce0324b611 UI: Correct grid view V_GONE handling. 2023-04-29 11:44:55 -07:00
Henrik Rydgård ee6234ecb6 I18N: Switch to getting categories by index instead of by string lookup
Also gets rid of the shared_ptr usage, and generally makes things nicer.

Needed for later config refactorings, good to get in early.
2023-04-07 10:35:01 +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
Henrik Rydgård 30c591e813 Fix smooth touchpad scrolling on Windows
Forgot that I had half-implemented it but not finished it up..
2023-01-01 22:23:14 +01:00
Henrik Rydgård 630b7830fa Improve background drag behavior on display layout screen
If you moved into and mouse-up-ed over one of the menus while dragging
the background, it stopped registering movement and "up events" which
felt really awkward.

This is not super pretty, better would be a win32-SetCapture-like
mechanism but works okay.
2022-12-13 00:27:22 +01:00
Unknown W. Brackets 9cfcbc46e6 Global: Cleanup initialization/pointer checks.
Cleaning up a lot of cases of uninitialized data, unchecked return values
for failures, and similar.
2022-12-10 21:13:36 -08:00