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

Use system clipboard for hitobjects in the editor #27707

Open
wants to merge 11 commits into
base: master
Choose a base branch
from
2 changes: 2 additions & 0 deletions osu.Game/Screens/Edit/ClipboardContent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ public class ClipboardContent
[JsonConverter(typeof(TypedListConverter<HitObject>))]
public IList<HitObject> HitObjects;

public const string CLIPBOARD_FORMAT = "osu/hitobjects";
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not a valid mime format, should probably be something like application/x-osu-hitobjects

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://www.rfc-editor.org/rfc/rfc6838.html#section-3.4

Subtype names with "x." as the first facet may be used for types
intended exclusively for use in private, local environments.

https://www.rfc-editor.org/rfc/rfc6838.html#section-4.2.8

Since this was published, the de facto practice has arisen for using
this suffix convention for other well-known structuring syntaxes. In
particular, media types have been registered with suffixes such as
"+der", "+fastinfoset", and "+json". This specification formalizes
this practice and sets up a registry for structured type name
suffixes.

So it should be application/x.osu.hitobjects+json.

Please note that web custom formats are prefixed with web in the javascript API (an image/png and web image/png can be different things). I'm still thinking about how this should be handled.


public ClipboardContent()
{
}
Expand Down
35 changes: 19 additions & 16 deletions osu.Game/Screens/Edit/Compose/ComposeScreen.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@
[Resolved]
private IGameplaySettings globalGameplaySettings { get; set; }

private Bindable<string> clipboard { get; set; }

private HitObjectComposer composer;

public ComposeScreen()
Expand Down Expand Up @@ -79,12 +77,6 @@
return new EditorSkinProvidingContainer(EditorBeatmap).WithChild(content);
}

[BackgroundDependencyLoader]
private void load(EditorClipboard clipboard)
{
this.clipboard = clipboard.Content.GetBoundCopy();
}

protected override void LoadComplete()
{
base.LoadComplete();
Expand All @@ -94,7 +86,6 @@
return;

EditorBeatmap.SelectedHitObjects.BindCollectionChanged((_, _) => updateClipboardActionAvailability());
clipboard.BindValueChanged(_ => updateClipboardActionAvailability());
composer.OnLoadComplete += _ => updateClipboardActionAvailability();
updateClipboardActionAvailability();
}
Expand All @@ -116,20 +107,32 @@
// regardless of whether anything was even selected at all.
// UX-wise this is generally strange and unexpected, but make it work anyways to preserve muscle memory.
// note that this means that `getTimestamp()` must handle no-selection case, too.
hostClipboard.SetText(getTimestamp());
var clipboardData = new ClipboardData

Check failure on line 110 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Linux, ubuntu-latest, SingleThread)

The type or namespace name 'ClipboardData' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 110 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Linux, ubuntu-latest, SingleThread)

The type or namespace name 'ClipboardData' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 110 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Linux, ubuntu-latest, MultiThreaded)

The type or namespace name 'ClipboardData' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 110 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Linux, ubuntu-latest, MultiThreaded)

The type or namespace name 'ClipboardData' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 110 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (macOS, macos-latest, SingleThread)

The type or namespace name 'ClipboardData' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 110 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (macOS, macos-latest, SingleThread)

The type or namespace name 'ClipboardData' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 110 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Windows, windows-latest, SingleThread)

The type or namespace name 'ClipboardData' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 110 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Windows, windows-latest, SingleThread)

The type or namespace name 'ClipboardData' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 110 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Windows, windows-latest, MultiThreaded)

The type or namespace name 'ClipboardData' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 110 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Windows, windows-latest, MultiThreaded)

The type or namespace name 'ClipboardData' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 110 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Code Quality

The type or namespace name 'ClipboardData' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 110 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Code Quality

The type or namespace name 'ClipboardData' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 110 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Build only (iOS)

The type or namespace name 'ClipboardData' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 110 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Build only (iOS)

The type or namespace name 'ClipboardData' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 110 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (macOS, macos-latest, MultiThreaded)

The type or namespace name 'ClipboardData' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 110 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (macOS, macos-latest, MultiThreaded)

The type or namespace name 'ClipboardData' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 110 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Build only (Android)

The type or namespace name 'ClipboardData' could not be found (are you missing a using directive or an assembly reference?)

Check failure on line 110 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Build only (Android)

The type or namespace name 'ClipboardData' could not be found (are you missing a using directive or an assembly reference?)
{
Text = getTimestamp()
};

if (CanCopy.Value)
clipboard.Value = new ClipboardContent(EditorBeatmap).Serialize();
{
clipboardData.AddCustom(
ClipboardContent.CLIPBOARD_FORMAT,
new ClipboardContent(EditorBeatmap).Serialize()
);
}

hostClipboard.SetData(clipboardData);

Check failure on line 123 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Linux, ubuntu-latest, SingleThread)

'Clipboard' does not contain a definition for 'SetData' and no accessible extension method 'SetData' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 123 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Linux, ubuntu-latest, SingleThread)

'Clipboard' does not contain a definition for 'SetData' and no accessible extension method 'SetData' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 123 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Linux, ubuntu-latest, MultiThreaded)

'Clipboard' does not contain a definition for 'SetData' and no accessible extension method 'SetData' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 123 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Linux, ubuntu-latest, MultiThreaded)

'Clipboard' does not contain a definition for 'SetData' and no accessible extension method 'SetData' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 123 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (macOS, macos-latest, SingleThread)

'Clipboard' does not contain a definition for 'SetData' and no accessible extension method 'SetData' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 123 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (macOS, macos-latest, SingleThread)

'Clipboard' does not contain a definition for 'SetData' and no accessible extension method 'SetData' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 123 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Windows, windows-latest, SingleThread)

'Clipboard' does not contain a definition for 'SetData' and no accessible extension method 'SetData' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 123 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Windows, windows-latest, SingleThread)

'Clipboard' does not contain a definition for 'SetData' and no accessible extension method 'SetData' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 123 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Windows, windows-latest, MultiThreaded)

'Clipboard' does not contain a definition for 'SetData' and no accessible extension method 'SetData' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 123 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Windows, windows-latest, MultiThreaded)

'Clipboard' does not contain a definition for 'SetData' and no accessible extension method 'SetData' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 123 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Code Quality

'Clipboard' does not contain a definition for 'SetData' and no accessible extension method 'SetData' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 123 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Code Quality

'Clipboard' does not contain a definition for 'SetData' and no accessible extension method 'SetData' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 123 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Build only (iOS)

'Clipboard' does not contain a definition for 'SetData' and no accessible extension method 'SetData' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 123 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Build only (iOS)

'Clipboard' does not contain a definition for 'SetData' and no accessible extension method 'SetData' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 123 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (macOS, macos-latest, MultiThreaded)

'Clipboard' does not contain a definition for 'SetData' and no accessible extension method 'SetData' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 123 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (macOS, macos-latest, MultiThreaded)

'Clipboard' does not contain a definition for 'SetData' and no accessible extension method 'SetData' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 123 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Build only (Android)

'Clipboard' does not contain a definition for 'SetData' and no accessible extension method 'SetData' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 123 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Build only (Android)

'Clipboard' does not contain a definition for 'SetData' and no accessible extension method 'SetData' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

updateClipboardActionAvailability();
}

public override void Paste()
{
if (!CanPaste.Value)
return;
string clipboardContent = hostClipboard.GetCustom(ClipboardContent.CLIPBOARD_FORMAT);

Check failure on line 130 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Linux, ubuntu-latest, SingleThread)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 130 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Linux, ubuntu-latest, SingleThread)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 130 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Linux, ubuntu-latest, MultiThreaded)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 130 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Linux, ubuntu-latest, MultiThreaded)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 130 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (macOS, macos-latest, SingleThread)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 130 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (macOS, macos-latest, SingleThread)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 130 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Windows, windows-latest, SingleThread)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 130 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Windows, windows-latest, SingleThread)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 130 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Windows, windows-latest, MultiThreaded)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 130 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Windows, windows-latest, MultiThreaded)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 130 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Code Quality

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 130 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Code Quality

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 130 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Build only (iOS)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 130 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Build only (iOS)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 130 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (macOS, macos-latest, MultiThreaded)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 130 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (macOS, macos-latest, MultiThreaded)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 130 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Build only (Android)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 130 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Build only (Android)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

var objects = clipboard.Value.Deserialize<ClipboardContent>().HitObjects;
var objects = clipboardContent?.Deserialize<ClipboardContent>().HitObjects;

Debug.Assert(objects.Any());
if (objects == null || objects.Count == 0)
return;

double timeOffset = clock.CurrentTime - objects.Min(o => o.StartTime);

Expand All @@ -149,7 +152,7 @@
private void updateClipboardActionAvailability()
{
CanCut.Value = CanCopy.Value = EditorBeatmap.SelectedHitObjects.Any();
CanPaste.Value = composer.IsLoaded && !string.IsNullOrEmpty(clipboard.Value);
CanPaste.Value = composer.IsLoaded && !string.IsNullOrEmpty(hostClipboard.GetCustom("osu/hitobjects"));

Check failure on line 155 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Linux, ubuntu-latest, SingleThread)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 155 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Linux, ubuntu-latest, SingleThread)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 155 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Linux, ubuntu-latest, MultiThreaded)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 155 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Linux, ubuntu-latest, MultiThreaded)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 155 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (macOS, macos-latest, SingleThread)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 155 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (macOS, macos-latest, SingleThread)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 155 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Windows, windows-latest, SingleThread)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 155 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Windows, windows-latest, SingleThread)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 155 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Windows, windows-latest, MultiThreaded)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 155 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (Windows, windows-latest, MultiThreaded)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 155 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Code Quality

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 155 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Code Quality

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 155 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Build only (iOS)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 155 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Build only (iOS)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 155 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (macOS, macos-latest, MultiThreaded)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 155 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Test (macOS, macos-latest, MultiThreaded)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 155 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Build only (Android)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)

Check failure on line 155 in osu.Game/Screens/Edit/Compose/ComposeScreen.cs

View workflow job for this annotation

GitHub Actions / Build only (Android)

'Clipboard' does not contain a definition for 'GetCustom' and no accessible extension method 'GetCustom' accepting a first argument of type 'Clipboard' could be found (are you missing a using directive or an assembly reference?)
}

private string getTimestamp()
Expand Down