1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-21 17:27:24 +08:00

Fix aspect ratio lock applying when shift pressed on a non-corner anchor

It doesn't make sense and it wasn't doing the right thing.
This commit is contained in:
Bartłomiej Dach 2024-05-23 15:08:43 +02:00
parent 3e34b2d37e
commit 128029e2af
No known key found for this signature in database

View File

@ -3,6 +3,7 @@
using osu.Framework.Allocation; using osu.Framework.Allocation;
using osu.Framework.Extensions; using osu.Framework.Extensions;
using osu.Framework.Extensions.EnumExtensions;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.Input.Events; using osu.Framework.Input.Events;
using osu.Framework.Utils; using osu.Framework.Utils;
@ -47,14 +48,14 @@ namespace osu.Game.Screens.Edit.Compose.Components
rawScale = convertDragEventToScaleMultiplier(e); rawScale = convertDragEventToScaleMultiplier(e);
applyScale(shouldLockAspectRatio: e.ShiftPressed); applyScale(shouldLockAspectRatio: isCornerAnchor(originalAnchor) && e.ShiftPressed);
} }
protected override bool OnKeyDown(KeyDownEvent e) protected override bool OnKeyDown(KeyDownEvent e)
{ {
if (IsDragged) if (IsDragged)
{ {
applyScale(shouldLockAspectRatio: e.ShiftPressed); applyScale(shouldLockAspectRatio: isCornerAnchor(originalAnchor) && e.ShiftPressed);
return true; return true;
} }
@ -66,7 +67,7 @@ namespace osu.Game.Screens.Edit.Compose.Components
base.OnKeyUp(e); base.OnKeyUp(e);
if (IsDragged) if (IsDragged)
applyScale(shouldLockAspectRatio: e.ShiftPressed); applyScale(shouldLockAspectRatio: isCornerAnchor(originalAnchor) && e.ShiftPressed);
} }
protected override void OnDragEnd(DragEndEvent e) protected override void OnDragEnd(DragEndEvent e)
@ -123,5 +124,7 @@ namespace osu.Game.Screens.Edit.Compose.Components
return Axes.Both; return Axes.Both;
} }
} }
private bool isCornerAnchor(Anchor anchor) => !anchor.HasFlagFast(Anchor.x1) && !anchor.HasFlagFast(Anchor.y1);
} }
} }