mirror of
https://github.com/ppy/osu.git
synced 2024-12-15 05:42:56 +08:00
Fix editor drag selection not continuing to select unless the mouse is moved
This commit is contained in:
parent
4e025d994c
commit
53d542546e
@ -53,6 +53,8 @@ namespace osu.Game.Screens.Edit.Compose.Components
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private RectangleF? dragRectangle;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handle a forwarded mouse event.
|
/// Handle a forwarded mouse event.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -66,15 +68,14 @@ namespace osu.Game.Screens.Edit.Compose.Components
|
|||||||
var dragQuad = new Quad(dragStartPosition.X, dragStartPosition.Y, dragPosition.X - dragStartPosition.X, dragPosition.Y - dragStartPosition.Y);
|
var dragQuad = new Quad(dragStartPosition.X, dragStartPosition.Y, dragPosition.X - dragStartPosition.X, dragPosition.Y - dragStartPosition.Y);
|
||||||
|
|
||||||
// We use AABBFloat instead of RectangleF since it handles negative sizes for us
|
// We use AABBFloat instead of RectangleF since it handles negative sizes for us
|
||||||
var dragRectangle = dragQuad.AABBFloat;
|
var rec = dragQuad.AABBFloat;
|
||||||
|
dragRectangle = rec;
|
||||||
|
|
||||||
var topLeft = ToLocalSpace(dragRectangle.TopLeft);
|
var topLeft = ToLocalSpace(rec.TopLeft);
|
||||||
var bottomRight = ToLocalSpace(dragRectangle.BottomRight);
|
var bottomRight = ToLocalSpace(rec.BottomRight);
|
||||||
|
|
||||||
Box.Position = topLeft;
|
Box.Position = topLeft;
|
||||||
Box.Size = bottomRight - topLeft;
|
Box.Size = bottomRight - topLeft;
|
||||||
|
|
||||||
PerformSelection?.Invoke(dragRectangle);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,7 +94,19 @@ namespace osu.Game.Screens.Edit.Compose.Components
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Hide() => State = Visibility.Hidden;
|
protected override void Update()
|
||||||
|
{
|
||||||
|
base.Update();
|
||||||
|
|
||||||
|
if (dragRectangle != null)
|
||||||
|
PerformSelection?.Invoke(dragRectangle.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Hide()
|
||||||
|
{
|
||||||
|
State = Visibility.Hidden;
|
||||||
|
dragRectangle = null;
|
||||||
|
}
|
||||||
|
|
||||||
public override void Show() => State = Visibility.Visible;
|
public override void Show() => State = Visibility.Visible;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user