1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-16 23:02:56 +08:00
osu-lazer/osu.Game/Rulesets/Edit
Bartłomiej Dach bdeea37a44
Commit active placement when starting drag selection via timeline
This was reported in https://github.com/ppy/osu/pull/28474, albeit the
code changes proposed there did not fix the issue at all.

See 8b6385f7d0 for demonstration of the
crash scenario. Basically what is happening there is:

- The starting premise is that there is a spinner placement active.
- At this time, a drag selection is started via the timeline.
- Once the drag selection finds at least one suitable object to select,
  it mutates `SelectedItems`.
- When selection changes for any reason, the `HitObjectComposer`
  decides to switch to the "select" tool, regardless of why
  the selection changed.
- Changing the active tool causes the current placement - if any -
  to be committed, which mutates the beatmap.
- Back at the drag box selection code, this causes a "collection
  modified when enumerating" exception.

The proposed fix here is to eagerly commit active placement - if any -
when drag selection is initiated via the timeline, which avoids this
issue. This also appears to vaguely match stable behaviour and is sort
of consistent with the logic of committing any outstanding changes upon
switching to the selection tool.
2024-06-14 09:32:40 +02:00
..
Checks Do not attempt to pass files that don't look like audio to BASS 2024-04-22 10:45:09 +02:00
Tools Use new icons in editor 2023-12-27 17:42:18 +01:00
BeatmapVerifier.cs Add checks for audio formats 2024-04-16 06:15:21 -03:00
BeatmapVerifierContext.cs Automated #nullable processing 2022-06-17 16:37:17 +09:00
ComposerDistanceSnapProvider.cs Adjust distance snap grid momentary toggle logic to not hide it on spacing adjust 2024-05-02 14:11:44 +02:00
DrawableEditorRulesetWrapper.cs Revert "Keep editor in frame stable mode when possible" 2024-01-14 09:10:39 +01:00
EditorTimestampParser.cs Simplify parsing code 2023-11-20 21:57:12 +09:00
EditorToolboxGroup.cs Automated pass 2023-06-24 01:00:03 +09:00
ExpandableButton.cs Merge branch 'master' into update-framework 2022-11-26 16:19:36 +01:00
ExpandingToolboxContainer.cs Automated pass 2023-06-24 01:00:03 +09:00
HitObjectComposer.cs Commit active placement when starting drag selection via timeline 2024-06-14 09:32:40 +02:00
HitObjectSelectionBlueprint.cs add collection of selection points. 2023-01-18 21:34:23 +01:00
IBeatmapVerifier.cs Automated pass 2023-06-24 01:00:03 +09:00
IBeatSnapProvider.cs Update IBeatSnapProvider documentation to mention the pre-divided BeatSnap 2022-12-02 17:57:15 +09:00
IDistanceSnapProvider.cs Remove DistancedHitObjectComposer inheritance from osu! composer 2023-10-19 11:46:30 +02:00
IPositionSnapProvider.cs Automated pass 2023-06-24 01:00:03 +09:00
PlacementBlueprint.cs Fix slider blueprint placement when ending placement outside the playfield 2023-07-11 17:29:53 +09:00
ScrollingHitObjectComposer.cs Move beat snap grid implementation details to ScrollingHitObjectComposer 2023-10-19 23:54:34 +09:00
SelectionBlueprint.cs Fix some new nullable inspections 2023-10-30 15:10:10 +09:00
SnapResult.cs Automated #nullable processing 2022-06-17 16:37:17 +09:00
SnapType.cs Automated pass 2023-06-24 01:00:03 +09:00