Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Middle click to delete the stacked hit objects at timeline has weird logic #30406

Open
MeerukYang opened this issue Oct 23, 2024 · 3 comments
Open
Assignees
Labels
area:editor priority:1 Very important. Feels bad without fix. Affects the majority of users. type:input

Comments

@MeerukYang
Copy link

Type

Cosmetic

Bug description

Stacked hit objects at timeline are like these:
image

When trying to middle-click to delete one hit object, for example the "2" circle, if place the cursor on the "2" circle area, the deletion may vary from "1", "2", or "3". This depends on where EXACTLY you clicked and whether the current-playing pointer is before or after the circle.

To be more accurate, stacked areas are listed as 1, 2 and 3 in this image:
未标题8967564-1

If the pointer is after the stacked objects, like this:
image
Then clicking the stacked area always delete the bottom object.
For example, click the 1 area to delete the blue circle; click the 2 or 3 area to delete the orange circle.
This is weird because it seems that you have placed the cursor on the object that need to be deleted, but actually the cursor is located in these stacked areas and you're actually deleting the bottom one.

And if the pointer is before the stacked objects, then clicking the stacked area always delete the top object.
For example, click the 1 or 2 area to delete the green circle; click the 3 area to delete the blue circle.
This makes more sense since the I-want-to-delete object is literally the object you want to delete.

However you cannot decide where the mappers would place the current-playing pointer, Thus there's a logic problem.
In current version, if hit objects stack to one another, the previous object is always above the latter one. And no one would think that the objects are transparent. Thus stacked objects are actually like this:
未标42342356题-1
It is more logical and reasonable that middle-click the 1 area to delete the green circle, 2 to blue, 3 to orange, no matter where located the stack areas or the current-playing pointer.

Screenshots or videos

No response

Version

2024.1009.1

Logs

compressed-logs.zip

@peppy
Copy link
Member

peppy commented Oct 24, 2024

TLDR: behaviour is correct if timeline blueprints are right of the centre point, but wrong if they are to the left. I've taken a quick look but can't see how this is happening (@OliBomby may be more readily able to call out what's going on here?)

osu.Game.Rulesets.Osu.Tests.2024-10-24.at.10.08.09.mp4

@peppy peppy added priority:2 Moderately important. Relied on by some users or impeding the usability of the game priority:1 Very important. Feels bad without fix. Affects the majority of users. and removed priority:2 Moderately important. Relied on by some users or impeding the usability of the game labels Oct 24, 2024
@OliBomby
Copy link
Contributor

I have no clue whats going on here. Input handling is still kind of mysterious to me.

@peppy
Copy link
Member

peppy commented Oct 24, 2024

This is doing custom input handling, else it would just-work because it would match the visuals.

For anyone investigating, the starting point would be

foreach (SelectionBlueprint<T> blueprint in ApplySelectionOrder(SelectionBlueprints.AliveChildren))

with focus on ApplySelectionOrder

@ppy ppy deleted a comment Oct 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:editor priority:1 Very important. Feels bad without fix. Affects the majority of users. type:input
Projects
None yet
Development

No branches or pull requests

4 participants