Commit Graph
607 Commits
Author SHA1 Message Date
Henrik Rydgård 3d619dad0e Merge pull request #22156 from hrydgard/tab-focus-recent
Fix a tab focus problem
2026-08-28 22:41:33 +02:00
Henrik Rydgård a61e8135dd Fix a tab focus problem 2026-08-28 15:29:14 +02:00
Henrik Rydgård fad7b93776 Merge pull request #22151 from hrydgard/ui-tab-navigation
UI: Add tab navigation
2026-08-27 22:17:47 +02:00
Nab 939a6c4c30 Replace plus/minus strings with UI icons in SliderPopup 2026-08-27 21:26:37 +02:00
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 c65eb7d54f Fix the point in time in the frame that we run and render the ImDebugger
Turns out it matters quite a lot. Will see if I can clean this up later.
2026-08-09 18:29:33 +02:00
Henrik Rydgård a957086eeb Try to fix test failure (vary strange) 2026-08-08 00:45:11 +02:00
Henrik Rydgård 25a146a11c Make the PPSSPP UI fit inside the imgui desktop 2026-08-07 17:56:09 +02: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 ca3fc0fa9e Change the screenmanager input interface 2026-08-07 16:15:02 +02:00
Henrik Rydgård a47edbf6ef Move event queueing out of ScreenManager. This is a prerequisite for an upcoming change. 2026-08-07 14:42:17 +02:00
Henrik Rydgård 7219cd2f5a Split off ScreenManager from Screen.cpp 2026-08-07 14:30:36 +02:00
Henrik Rydgård 2c73aead45 Minor code cleanup on pause screen 2026-08-07 08:49:29 +02:00
Henrik Rydgård e4b90c0471 Fix issue with chat button / DevMenu button becoming focusable
This made gameplay a bit difficult when these buttons were enabled.
2026-08-07 06:56:52 +02:00
Henrik Rydgård 1c0740c4b9 SDL: Simplify graphics context fallback 2026-08-03 14:54:49 +02:00
Henrik Rydgård a7b1b319ce Limit PNG decode dimensions to prevent decompression bombs
pngLoadPtr allocated the decoded buffer directly from attacker-controlled
PNG IHDR dimensions with no upper bound, so browsing a crafted game icon
or savedata could trigger a multi-gigabyte allocation.

- Add maxWidth/maxHeight parameters to pngLoadPtr (default 8192x8192)
  and reject images larger than the limits.
- Thread the limits through LoadTextureLevelsFromFileData,
  CreateTextureFromFileData, and CreateTextureFromFile.
- Limit game icons to 256x128 in GameInfoCache and IconCache.
2026-08-01 11:41:24 +02:00
Henrik Rydgård f94c094441 Fix problematic change in event processing ordering 2026-07-30 18:27:09 +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 640a46588d Fix hang on "More settings...".
Fixes #21893
2026-07-08 11:16:09 +02:00
Henrik Rydgård 48068384fe Add ugly hack to prevent double-trigger of ESC to close the pause screen 2026-06-28 12:21:51 +02:00
Henrik Rydgård 2c10fd12c4 Delete the inputLock_. It will not be missed. 2026-06-25 13:02:16 +02:00
Henrik Rydgård 444f78bf84 Don't forget to clear the event queue.. 2026-06-25 13:00:40 +02:00
Henrik Rydgård 72ee82844d Doesn't yet work 2026-06-24 23:04:17 +02:00
Henrik Rydgård 729f11ecbe Simplify away some nonsense 2026-06-24 22:55:34 +02:00
Henrik Rydgård a4a6780b36 Some code simplification 2026-06-24 22:13:31 +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 0840e292ab Move some logic out to a per-frame poll instead of per input event 2026-06-24 20:41:10 +02:00
Henrik Rydgård 5ab3d6042b Move modifier key tracking out from the screen system 2026-06-16 10:57:55 +02:00
Henrik Rydgård 45f41be8f0 Add a debug window to check active compat flags 2026-06-05 17:55:28 +02:00
Henrik Rydgård 39e9d28b4e Minor ScreenManager fix 2026-05-30 19:07:59 +02:00
Henrik Rydgård d849db6be5 Buildfix, remove redundant variable 2026-05-30 19:07:59 +02:00
Henrik Rydgård f163d1ecbc Merge pull request #21738 from hrydgard/assorted-fixes
Code cleanup from GermanAizek, fix hidden ShowMenuBar option
2026-05-27 12:51:34 +02:00
Herman Semenoff b1d140e8e7 OpenGL/Vulkan/UI: duplicate fields move to separate const reference var 2026-05-27 12:26:12 +02:00
Henrik Rydgård 5513fcb223 Merge pull request #21705 from GermanAizek/constexpr-cpp17
GPU: modernize use C++17 constexpr for precalculate compilation
2026-05-27 12:21:39 +02:00
Henrik Rydgård 4a420c95c2 Remove some redundant device caps, show clip/cull/depth-clamp in system info 2026-05-21 11:59:26 +02:00
Herman Semenoff 400d136f51 GPU: modernize use C++17 constexpr for precalculate compilation 2026-05-19 21:57:45 +03:00
Henrik Rydgård cc0ece038c Clean up the string type in RequestCallback - somehow was both char* and std::string????
Might be related to #21695
2026-05-18 14:16:34 +02:00
Henrik Rydgård 0092e266de Merge pull request #21697 from GermanAizek/std-empty-and-clear
Core/UI: use clear() and empty() for std containers
2026-05-18 12:43:36 +02:00
Herman Semenoff d406f63102 Core/UI: use clear() and empty() for std containers 2026-05-17 21:28:31 +03:00
Henrik Rydgård 91b3741a57 Implement a simple cheat database download facility 2026-05-16 22:31:13 +02:00
Henrik Rydgård d78d51851c More tab code cleanup 2026-05-13 17:25:52 +02:00
Henrik Rydgård d9eb513600 TabHolder sanity check. Code cleanup. 2026-05-13 17:18:42 +02:00
Henrik Rydgård 59f545e804 Fix issue with the current tab not being saved through screen recreation 2026-05-12 10:13:00 +02:00
Henrik Rydgård 9d5a3ec354 Android: Add an error message with an info link if launching a file browser fails 2026-05-12 01:45:30 +02:00
Henrik Rydgård 2c0f562ff5 ScrollView: Don't have drags of the "opposite" orientation cancel clicks. 2026-05-10 23:41:39 +02:00
Henrik Rydgård ed15ff7f8e Fix GPUDriverTestScreen 2026-05-10 23:41:39 +02:00
Henrik Rydgård 00bfad40bd More refactoring in TabHolder 2026-05-10 22:24:33 +02:00
Henrik Rydgård 41771d5369 Minor cleanup in TabHolder 2026-05-10 22:12:23 +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 32799755e6 Add some sanity checks in TabHolder (prompted by a crash report). Minor cleanup 2026-05-05 10:36:21 +02:00