Probably closes https://github.com/ppy/osu/issues/33230.
I say "probably" because I couldn't reproduce this myself using the
scenario provided in the issue but looking at the code involved I can
see why it would happen. Long and short of it is that the speed
adjustment cleanup code was much too reliant on disposal executing
quickly, which as we've learned on several occasions before, cannot be
relied upon.
Apparently useful in modding workflows when you want to test out a few
different variants of a thing.
Re-uses `Ctrl-L` binding from stable. Some folks may argue that the
dialog makes the hotkey pointless, but I really do want to protect
users from accidental data loss, and also if you want to power through
it quickly, you can hit the 1 key when the dialog shows, which will
bypass the hold-to-activate period (which wasn't intentional, but so
many people want a bypass at this point that we're probably keeping that
behaviour for power users).
- Bookmark menu items get disabled when they would do nothing.
- Bookmark deletion only deletes the closest bookmark instead of all of
them within the proximity of 2 seconds to current clock time. Action
is only however *enabled* within 2 seconds of a bookmark.
Additionally, logic was moved out of `Editor` because it's a huge class
and I dislike huge classes if they can be at all avoided.
Fixes the main part of https://github.com/ppy/osu/issues/31144.
Support for selecting a video will come later.
Making this work was an absolutely awful time full of dealing with
delightfully kooky issues, and yielded in a very weird-shaped
contraption. There is at least one issue remaining wherein storyboard
videos do not actually display until the track is started in editor, but
that is 99% a framework issue and I do not currently have the mental
fortitude to diagnose further.
Closes https://github.com/ppy/osu/issues/31290.
Tend to agree that this is a good idea for gameplay test at least. Not
sure about other similar interactions like exiting - I don't think it
matters what's done in those cases, because for exiting timing is in no
way key, so I just applied this locally to gameplay test.
This was another IRL request from a mapper / team member. The rationale
here is that it can be very annoying to map with break time enabled if
you have a large gap in the beatmap you are trying to fill with
hitobjects, as you are placing objects on top of a very gray area.
They will not only contract if the user chooses to have them contract
(new setting in the `View` menu) or if the game isn't wide enough to
allow full interaction with the playfield while they are expanded.
Addressess https://github.com/ppy/osu/discussions/28970.