mirror of
https://github.com/osukey/osukey.git
synced 2025-08-02 22:26:41 +09:00
Move clipboard action availability logic down to editor screens
This commit is contained in:
@ -77,6 +77,13 @@ namespace osu.Game.Screens.Edit.Compose
|
||||
return new EditorSkinProvidingContainer(EditorBeatmap).WithChild(content);
|
||||
}
|
||||
|
||||
protected override void LoadComplete()
|
||||
{
|
||||
base.LoadComplete();
|
||||
EditorBeatmap.SelectedHitObjects.BindCollectionChanged((_, __) => updateClipboardActionAvailability());
|
||||
clipboard.BindValueChanged(_ => updateClipboardActionAvailability(), true);
|
||||
}
|
||||
|
||||
#region Input Handling
|
||||
|
||||
public bool OnPressed(KeyBindingPressEvent<PlatformAction> e)
|
||||
@ -108,30 +115,24 @@ namespace osu.Game.Screens.Edit.Compose
|
||||
|
||||
#region Clipboard operations
|
||||
|
||||
public override void Cut()
|
||||
protected override void PerformCut()
|
||||
{
|
||||
base.Cut();
|
||||
base.PerformCut();
|
||||
|
||||
Copy();
|
||||
EditorBeatmap.RemoveRange(EditorBeatmap.SelectedHitObjects.ToArray());
|
||||
}
|
||||
|
||||
public override void Copy()
|
||||
protected override void PerformCopy()
|
||||
{
|
||||
base.Copy();
|
||||
|
||||
if (EditorBeatmap.SelectedHitObjects.Count == 0)
|
||||
return;
|
||||
base.PerformCopy();
|
||||
|
||||
clipboard.Value = new ClipboardContent(EditorBeatmap).Serialize();
|
||||
}
|
||||
|
||||
public override void Paste()
|
||||
protected override void PerformPaste()
|
||||
{
|
||||
base.Paste();
|
||||
|
||||
if (string.IsNullOrEmpty(clipboard.Value))
|
||||
return;
|
||||
base.PerformPaste();
|
||||
|
||||
var objects = clipboard.Value.Deserialize<ClipboardContent>().HitObjects;
|
||||
|
||||
@ -152,6 +153,12 @@ namespace osu.Game.Screens.Edit.Compose
|
||||
EditorBeatmap.EndChange();
|
||||
}
|
||||
|
||||
private void updateClipboardActionAvailability()
|
||||
{
|
||||
CanCut.Value = CanCopy.Value = EditorBeatmap.SelectedHitObjects.Any();
|
||||
CanPaste.Value = !string.IsNullOrEmpty(clipboard.Value);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user