Dean Herbert
bff686f012
Avoid double iteration when updating group states
2025-02-06 17:22:50 +09:00
Dean Herbert
024fbde0fd
Refactor selection and activation handling
...
I had a bit of a struggle getting header traversal logic to work well.
The constraints I had in place were a bit weird:
- Group panels should toggle or potentially fall into the prev/next
group
- Set panels should just traverse around them
The current method of using `CheckValidForGroupSelection` return type
for traversal did not mesh with the above two cases. Just trust me on
this one since it's quite hard to explain in words.
After some re-thinking, I've gone with a simpler approach with one
important change to UX: Now when group traversing with a beatmap set
header currently keyboard focused, the first operation will be to reset
keyboard selection to the selected beatmap, rather than traverse.
I find this non-offensive – at most it means a user will need to press
their group traversal key one extra time.
I've also changed group headers to always toggle expansion when doing
group traversal with them selected.
To make all this work, the meaning of `Activation` has changed somewhat.
It is now the primary path for carousel implementations to change
selection of an item. It is what the `Drawable` panels call when they
are clicked.
Selection changes are not performed implicitly by `Carousel` – an
implementation should decide when it actually wants to change the
selection, usually in `HandleItemActivated`.
Having less things mutating `CurrentSelection` is better in my eyes, as
we see this variable as only being mutated internally when utmost
required (ie the user has requested the change). With this change,
`CurrentSelection` can no longer become of a non-`T` type (in the
beatmap carousel implementation at least).
This might pave a path forward for making `CurrentSelection` typed, but
that comes with a few other concerns so I'll look at that as a
follow-up.
2025-02-06 17:02:44 +09:00
Dean Herbert
4026ca84f8
Move selected retrieval functions to base class
2025-02-06 16:48:17 +09:00
Dean Herbert
a25e1f4f9b
Add test coverage of artist grouping
2025-02-06 16:48:17 +09:00
Dean Herbert
bf377e081a
Reorganise tests to make more logical when manually testing
2025-02-06 15:09:41 +09:00
Dean Herbert
342a66b9e2
Fix keyboard traversal on a collapsed group not working as intended
2025-02-06 14:49:58 +09:00
Dean Herbert
88ad87a78e
Expose set grouping state
2025-02-06 14:30:15 +09:00
Dean Herbert
0257b8c2ff
Move metadata randomisation local to usage
2025-02-06 14:07:50 +09:00
Dean Herbert
11de429621
Add support for grouping by artist
2025-02-05 19:48:41 +09:00
Dean Herbert
ea725e2caf
Merge pull request #31524 from smoogipoo/user-panel-status
...
Display up-to-date online status in user panels
2025-02-05 19:22:27 +09:00
Dean Herbert
c37fa261c3
Merge pull request #31789 from bdach/distance-snap-fix
...
Fix distance snap grid not properly working due to multiple issues
2025-02-05 18:41:46 +09:00
Dean Herbert
b7aa71c975
Adjust xmldoc slightly to convey the disposal pattern
2025-02-05 18:24:07 +09:00
Dean Herbert
9b79cf6c61
Merge pull request #31784 from bdach/bss/wizard-appearance
...
Implement visual appearance of beatmap submission wizard
2025-02-05 17:34:30 +09:00
Bartłomiej Dach
4f629478b8
Merge pull request #31779 from peppy/menu-fade-out
...
Change menus to fade out with a slight delay so settings changes are visible
2025-02-05 09:29:56 +01:00
Dean Herbert
2356d3e2d0
Refactor OsuContextMenu
to avoid code duplication
2025-02-05 16:34:15 +09:00
Dean Herbert
8c5b19d4f8
Merge pull request #31780 from necocat0918/pr
...
Added warning before bookmark reset
2025-02-05 16:02:44 +09:00
Dean Herbert
09d26fbf5e
Minor adjustments
2025-02-05 15:58:34 +09:00
NecoDev
13fa49d5b5
Merge branch 'master' into pr
2025-02-05 14:53:20 +08:00
NecoDev
db7b665f4d
Removed unused using
...
For https://github.com/ppy/osu/pull/31780
2025-02-05 13:31:57 +08:00
Dean Herbert
20c4badbba
Merge pull request #31795 from peppy/update-framework
...
Update framework
2025-02-04 23:53:55 +09:00
Dean Herbert
099ce39531
Use same delay in context menus
2025-02-04 23:21:41 +09:00
Dean Herbert
0d7bbd63fc
Merge branch 'master' into user-panel-status
2025-02-04 22:56:19 +09:00
Dean Herbert
15ed029dd1
Merge pull request #31260 from smoogipoo/multiplayer-free-style
...
Add support for "freestyle" in multiplayer
2025-02-04 22:40:38 +09:00
Dean Herbert
87ff8778c6
Merge pull request #31791 from bdach/unify-selection-behaviour
...
Always select the closest control point group regardless of whether it has a timing point on entering timing screen
2025-02-04 22:32:22 +09:00
Bartłomiej Dach
23ec27e911
Merge branch 'master' into distance-snap-fix
2025-02-04 13:50:14 +01:00
Dean Herbert
386fb55392
Update framework
2025-02-04 21:48:45 +09:00
Dean Herbert
a93dabd33f
Merge branch 'master' into multiplayer-free-style
2025-02-04 21:48:39 +09:00
Bartłomiej Dach
41cf3696f2
Merge branch 'master' into bss/wizard-appearance
2025-02-04 13:48:35 +01:00
Dean Herbert
82ccce8099
Merge pull request #31783 from bdach/bss/form-button
...
Implement "form button" control
2025-02-04 21:45:11 +09:00
Bartłomiej Dach
c5c1861d4b
Merge pull request #31787 from peppy/carousel-v2-expanded-state
...
Add expanded state tracking to beatmap carousel v2
2025-02-04 13:07:21 +01:00
Bartłomiej Dach
2dbf30a096
Select timing point on enter if no effect point is active at the time
...
Noticed during testing.
2025-02-04 12:44:05 +01:00
Bartłomiej Dach
a0b6610054
Always select the closest control point group regardless of whether it has a timing point
2025-02-04 12:35:02 +01:00
Bartłomiej Dach
d28ea7bfbf
Fix code quality
2025-02-04 12:30:36 +01:00
Bartłomiej Dach
4077b41837
Merge branch 'bss/form-button' into bss/wizard-appearance
2025-02-04 12:30:08 +01:00
Bartłomiej Dach
7402f3e508
Merge branch 'master' into bss/form-button
2025-02-04 12:29:22 +01:00
Bartłomiej Dach
07ab5a5ace
Merge branch 'master' into carousel-v2-expanded-state
2025-02-04 12:07:23 +01:00
Bartłomiej Dach
95a1b0e7cb
Merge pull request #31785 from peppy/fix-carousel-tests
...
Fix carousel tests failing due to dependency on depth ordering
2025-02-04 12:06:57 +01:00
Bartłomiej Dach
731f100aaf
Fix incorrect snapping behaviour when previous object is not snapped to beat
2025-02-04 11:45:15 +01:00
Dean Herbert
6c6063464a
Remove Scheduler.AddOnce
from updateSpecifics
...
To keep things simple, let's not bother debouncing this. The debouncing
was causing spectating handling to fail because of two interdependent
components binding to `BeatmapAvailability`:
Binding to update the screen's `Beatmap` after a download completes:
5874706117/osu.Game/Screens/OnlinePlay/Match/RoomSubScreen.cs (L266-L267)
Binding to attempt a load request:
8bb7bea04e/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerMatchSubScreen.cs (L67)
The first must update the beatmap before the second runs, else gameplay
will not load due to `Beatmap.IsDefault`.
2025-02-04 18:41:28 +09:00
Dan Balasescu
0ad97c1fad
Fix inspection
2025-02-04 18:24:57 +09:00
Dean Herbert
599b59cb14
Add expanded state to sample drawable representations
2025-02-04 18:06:16 +09:00
Dan Balasescu
2f90bb4d67
Watch global user presence while in spectator screen
2025-02-04 17:55:50 +09:00
Dan Balasescu
61419ec9c8
Refactor user presence watching to be tokenised
2025-02-04 17:54:03 +09:00
Dean Herbert
58560f8acf
Add tracking of expansion states for groups and sets
2025-02-04 17:51:51 +09:00
Dean Herbert
ccdb6e4c48
Fix carousel tests failing due to dependency on depth ordering
2025-02-04 17:50:16 +09:00
Dean Herbert
2f2dc158e0
Ensure test step doesn't consider pooled instances of drawables
2025-02-04 17:45:02 +09:00
Bartłomiej Dach
4dd4e52e6d
Implement visual appearance of beatmap submission wizard
2025-02-04 09:06:33 +01:00
Bartłomiej Dach
3893303988
Implement "form button" control
2025-02-04 09:05:33 +01:00
Bartłomiej Dach
6e59cab928
Merge pull request #31764 from peppy/beatmap-carousel-v2-grouping
...
Add group support to beatmap carousel v2
2025-02-04 08:13:54 +01:00
Dean Herbert
1e1fb5476e
Merge pull request #31734 from bdach/simplify-slider-encoding-logic
...
Fix multi-segment-type sliders getting mangled on legacy export
2025-02-04 15:08:44 +09:00