Commit Graph
51 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Opus 5.5 b91bd6af86 Settings: Build the settings screen from pages described as data
Each tab is now a SettingsPage: a list of items (headers, settings, buttons,
hints, links to other pages) that a function builds and views are created
from. Settings are added with page->Setting(&g_Config.x), which takes
the label, the kind of view, the range or choices, units, labels for special
values and the default from the config. The pages keep what depends on the
UI (which settings to show and when, enable rules, and behavior that needs the
screen), and reach the screen through the page's SettingsPageHost.

A page can link to other pages, which open on top of it in the same tab,
under a bar showing where you are, like Tools > Developer tools > Graphics,
where the earlier pages can be clicked to go back to them. The bar has back,
search and help buttons, and the back key also goes back a page (or out of a
search) before leaving the screen. Each page remembers its scroll position.
In portrait there's no tab strip: a page links to the tabs, and the bar shows
just the current page's title. Rotating keeps showing the same page. Moving
between pages only focuses an item when navigating with a keyboard or
controller.

The developer tools are now pages linked from the Tools tab, instead of a
screen of their own. The in-game developer menu and
--start-screen=developertools open the settings on that page. The toggles of
live state (the remote debugger and the MIPS tracer) show and change it
through functions, and pretending to be in-game for the notification tests is
a flag on the OSD. The memory map and memstick tests, only reachable from
commented-out code, are removed.

Search lists the matching settings from all tabs and the pages they link to,
grouped by where they are. Each result goes to the setting on its page,
scrolled to and highlighted (outlined, when picked with a mouse or touch), or
for a page, opens it. This replaces the search tab and the old filter that
hid the views that didn't match, and with them ShowSearchControls. Changing
tabs leaves the search.

The pages, the bar and search are in SettingsPagesDialogScreen, between the
tabbed dialog screen and the settings screen, so the other tabbed screens
keep plain tabs.

Other visible changes:
- Reset buttons that went to the wrong value now go to the real default: the
  touch control auto-hide delay (was 20 seconds instead of 8), the mouse
  wheel delay (1 ms, below its own range, instead of 80) and the UI size (0
  instead of -1 on desktop). The alternative speeds get a reset button.
- Units are shown on more sliders (frames, MHz, seconds, Hz), and popups no
  longer spell out what 0 means in the units, since the zero label does.
  Units of up to three characters (%, x, ms, MHz) aren't translated.
- The Android HW scaler hides the scales the display is too small for,
  instead of cutting the list short.
- Choices are translated in the setting's own section.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 15:26:58 +01:00
Henrik Rydgård 965b07c527 A lot more round corner fixes and layout fixes. 2026-10-25 10:28:40 +01:00
Henrik Rydgård c44a12363f Prototype the new ChoiceGroup component 2026-10-24 01:52:34 +02:00
Henrik RydgårdandClaude Opus 5.5 b0382ed91a Game browser: Backspace goes up a directory, Windows raw input flags key repeats
With no type-to-search active, Backspace goes to the parent directory. Never
on a repeat, so holding it doesn't climb to the root. Not every platform
flags repeats, so the browser also tracks whether it's held.

Windows raw input now flags auto-repeated key downs as IS_REPEAT, like
Android and UWP, and forgets the held keys it releases on losing focus. The
UI drops OS repeats of a key it's already repeating itself, so held arrows
don't double up (they were dropped before too, a step later).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 11:36:30 +02:00
Henrik RydgårdandClaude Opus 5.5 db3ec7567f UI: Use Cmd for shortcuts on Mac and iOS, not Ctrl
- Fixes #17608

Text fields took Ctrl or Cmd for copy/paste/undo; now it's Cmd on Apple
platforms and Ctrl elsewhere, as is Ctrl+F (Cmd+F) for game search. Word
delete in the search filter is Option+Backspace on Apple.

The ImGui debugger never got Super, so with ImGui's Mac Cmd/Ctrl swap,
its paste and other Ctrl shortcuts could not be reached at all on Mac.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-17 17:46:55 +02:00
Henrik RydgårdandClaude Opus 5.5 753e869ca1 Search: Drop the focus from a view the filter hides
When a search stopped matching the focused game, it stayed focused while
hidden, so its background and music kept going.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 11:17:44 +02:00
Henrik RydgårdandClaude Opus 5.5 0066599f9a Game browser: Add an XMB-style large list mode
- Fixes #22202

A third view mode next to grid and list: a list with full size icons,
scaled by the grid icon size setting. Like the XMB, the selected (or
hovered) game plays its ICON1.PMF in place of the icon.

The per-tab grid bools become GameBrowserView1-4 ints. The old GridView
keys are still read, to pick the default, but no longer saved.

The PMF decoding moved out of GameScreen's PMFView into a shared
PMFVideoTexture.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 10:24:32 +02:00
Henrik RydgårdandClaude Opus 5.5 671b6ce397 Type-to-search: Backspace removes a whole UTF-8 character, ignore § and other Latin-1 symbols
Backspace popped a single byte, leaving half of a multi-byte character behind.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:30:32 +02:00
Henrik RydgårdandClaude Opus 5.5 ce3d8d37c5 Game browser search: also match the filename, minus extension
Works before the game's metadata has loaded.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 11:50:28 -06:00
Henrik Rydgård db8ff4391e Enable ImDebugger everywhere, on top of the regular UI. 2026-08-07 17:35:15 +02:00
Henrik Rydgård 78f80a0010 Some tweaks to avoid name collisions in upcoming commits 2026-07-10 12:11:17 +02:00
Henrik Rydgård 847953fd31 Fix wrong logic causing excessive software transform fallback if cull planes are missing. Minor cleanup. 2026-05-31 13:31:16 +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 ea4c46f27c Add ability to set keyboard focus to specific screens. Needed for searchbar on Mac. 2026-05-04 14:29:26 +02:00
Henrik Rydgård 71d04bfcae Implement cheat search on mobile 2026-05-04 00:36:16 +02:00
Henrik Rydgård 691c1f3251 Add a way for titles to always be visible in the cheat search 2026-05-04 00:15:03 +02:00
Henrik Rydgård f02624ba32 Implement type-to-search in cheats dialog 2026-05-03 18:08:00 +02:00
Henrik Rydgård 2d90058421 Move more of the search code out of GameBrowser 2026-05-03 17:44:01 +02:00
Henrik Rydgård e354d0dfdd Break out SearchEngine and SearchBar 2026-05-03 17:41:18 +02:00
Henrik Rydgård 300f18db58 Add back the "Landscape auto" rotation type 2026-03-24 10:36:16 -06:00
Henrik Rydgård fba616a259 Show setting hints as disabled if the setting is disabled
See #21423
2026-03-13 16:40:02 +01:00
Henrik Rydgård e0f1b6b7d9 Move the "localhost = multiple instances" hint into the adhoc server selector 2026-03-10 09:05:10 +01:00
Henrik Rydgård 4b3af8cb54 Fix some minor UI issues with title bars 2026-02-17 22:36:43 +01:00
Henrik Rydgård 5d4ac87b2b In PopupMultiChoice lists, indicate the selected item with a checkmark
See #21223
2026-02-09 14:35:34 +01:00
Henrik Rydgård 4f4de447dd Apply minor cleanups from #21171 2026-02-09 13:08:44 +01:00
Henrik Rydgård d8b8a51309 Correct a bunch of edge cases, move some code around 2026-02-08 17:07:22 +01:00
Henrik Rydgård a342b53d6d Correct look of the screen rotation picker on the System tab in settings 2026-02-08 00:53:50 +01:00
Henrik Rydgård 03a7df74fa Have two independent gesture control zones 2026-02-04 15:01:06 +01:00
Henrik Rydgård 8b8c776491 Fix visual issue with rotation button on the pause screen 2026-01-19 17:00:41 +01:00
Henrik Rydgård 64461329e7 More minor fixes and cleanups 2026-01-02 14:20:20 +01:00
Henrik Rydgård 18a67b82d2 Do the same with KeyInputFlags. Fix minor UI misalignments 2025-12-19 13:41:58 +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 ed25b5e991 Add convenient UI on the pause screen for changing/locking the screen orientation 2025-11-26 11:14:37 +01:00
Henrik Rydgård dede6dc10e Eliminate annoying flicker on GameScreen 2025-11-25 15:46:33 +01:00
Henrik Rydgård b8fced5b41 Path code cleanup, move some UI code (#21037)
* Move a bunch of path logic into Core/Util/PathUtil.cpp/h

.

* Move GameImageView out from SaveDataScreen

* More cleanup, add a translation string
2025-11-25 00:44:24 +01:00
Henrik Rydgård 3116eba395 More UI work (#21035)
* Improve a couple of on-screen buttons (menu, fastforward)

* Fix the new continue button, oops

* Add some missing translations

* Split a translation string to make portrait look better

* More GameScreen redesign

* Don't accidentally go into game-specific mode

* Fix layout issue with popupscreens, fix context menu positioning

* One more icon
2025-11-24 20:33:13 +01:00
Henrik Rydgård 22b3ad2372 Get rid of the SettingInfoMessage popups 2025-11-23 13:56:34 +01:00
Henrik Rydgård 1a35049483 Popup menu fix, inset fix on pause screen 2025-11-22 15:51:44 +01:00
Henrik Rydgård defd21cc90 Android: Rework UI insets handling (#21007)
* During game load, place the loading screen where the game will appear

* Android: Merge NativeActivity into PpssppActivity

* Rework window insets handling on Android

* Main screen: Display the path on its own line in portrait mode

* Make the "Fullscreen" setting on Android separate between portrait and landscape
2025-11-16 10:43:58 +01:00
Henrik Rydgård 57507ec9e6 GameScreen: New look in portrait mode 2025-11-15 20:44:14 +01:00
Henrik Rydgård 09d195c9ef More layout work. Use GameDB titles on the top of the game screen. 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 6f2742a2cb Some UI polish 2025-11-09 16:49:15 +01:00
Henrik Rydgård be34e45536 Clean up language switching code slightly, add (disabled) shortcut to randomize for testing.
Remove background color from some titles.
2025-11-09 16:26:58 +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 6d1973edfb Add banners on the top of settings pages, if editing game-specific settings show the icon. 2025-11-09 08:51:41 +01:00
Henrik Rydgård 89b3abbe7b More topbar styling 2025-10-29 09:43:16 +01:00
Henrik Rydgård 7896845e0c Rename "Custom key setting" to "Custom touch button setup" 2025-10-29 09:25:28 +01:00
Henrik Rydgård 78f20846c5 Convert more screens to SimpleDialogScreen 2025-10-29 09:12:37 +01:00
Henrik Rydgård 2b9f2672bb UI screens header cleanup 2025-10-29 00:15:41 +01:00