diff --git a/Example/Example.csproj b/Example/Example.csproj
index ad8053cb8..f82d9429b 100644
--- a/Example/Example.csproj
+++ b/Example/Example.csproj
@@ -11,7 +11,7 @@
1.0
-
+
diff --git a/Terminal.Gui/Terminal.Gui.csproj b/Terminal.Gui/Terminal.Gui.csproj
index 9384fcaa9..eb8854238 100644
--- a/Terminal.Gui/Terminal.Gui.csproj
+++ b/Terminal.Gui/Terminal.Gui.csproj
@@ -17,7 +17,7 @@
-
+
diff --git a/UnitTests/ClipboardTests.cs b/UnitTests/ClipboardTests.cs
index 25c59d180..2276e7358 100644
--- a/UnitTests/ClipboardTests.cs
+++ b/UnitTests/ClipboardTests.cs
@@ -53,21 +53,23 @@ namespace Terminal.Gui.Core {
[AutoInitShutdown]
public void TrySetClipboardData_Sets_The_OS_Clipboard ()
{
- var clipText = "Trying to set the OS clipboard.";
- if (Clipboard.IsSupported) {
- Assert.True (Clipboard.TrySetClipboardData (clipText));
- } else {
- Assert.False (Clipboard.TrySetClipboardData (clipText));
- }
+ lock (Clipboard.Contents) {
+ var clipText = "Trying to set the OS clipboard.";
+ if (Clipboard.IsSupported) {
+ Assert.True (Clipboard.TrySetClipboardData (clipText));
+ } else {
+ Assert.False (Clipboard.TrySetClipboardData (clipText));
+ }
- Application.Iteration += () => Application.RequestStop ();
+ Application.Iteration += () => Application.RequestStop ();
- Application.Run ();
+ Application.Run ();
- if (Clipboard.IsSupported) {
- Assert.Equal (clipText, Clipboard.Contents);
- } else {
- Assert.NotEqual (clipText, Clipboard.Contents);
+ if (Clipboard.IsSupported) {
+ Assert.Equal (clipText, Clipboard.Contents);
+ } else {
+ Assert.NotEqual (clipText, Clipboard.Contents);
+ }
}
}
@@ -79,110 +81,112 @@ namespace Terminal.Gui.Core {
var exit = false;
var getClipText = "";
- Application.Iteration += () => {
- if (RuntimeInformation.IsOSPlatform (OSPlatform.Windows)) {
- // using (Process clipExe = new Process {
- // StartInfo = new ProcessStartInfo {
- // RedirectStandardInput = true,
- // FileName = "clip"
- // }
- // }) {
- // clipExe.Start ();
- // clipExe.StandardInput.Write (clipText);
- // clipExe.StandardInput.Close ();
- // var result = clipExe.WaitForExit (500);
- // if (result) {
- // clipExe.WaitForExit ();
- // }
- // }
+ lock (Clipboard.Contents) {
+ Application.Iteration += () => {
+ if (RuntimeInformation.IsOSPlatform (OSPlatform.Windows)) {
+ // using (Process clipExe = new Process {
+ // StartInfo = new ProcessStartInfo {
+ // RedirectStandardInput = true,
+ // FileName = "clip"
+ // }
+ // }) {
+ // clipExe.Start ();
+ // clipExe.StandardInput.Write (clipText);
+ // clipExe.StandardInput.Close ();
+ // var result = clipExe.WaitForExit (500);
+ // if (result) {
+ // clipExe.WaitForExit ();
+ // }
+ // }
- using (Process pwsh = new Process {
- StartInfo = new ProcessStartInfo {
- FileName = "powershell",
- Arguments = $"-command \"Set-Clipboard -Value \\\"{clipText}\\\"\""
- }
- }) {
- pwsh.Start ();
- pwsh.WaitForExit ();
- }
- getClipText = Clipboard.Contents.ToString ();
-
- } else if (RuntimeInformation.IsOSPlatform (OSPlatform.OSX)) {
- using (Process copy = new Process {
- StartInfo = new ProcessStartInfo {
- RedirectStandardInput = true,
- FileName = "pbcopy"
- }
- }) {
- copy.Start ();
- copy.StandardInput.Write (clipText);
- copy.StandardInput.Close ();
- copy.WaitForExit ();
- }
- getClipText = Clipboard.Contents.ToString ();
-
- } else if (RuntimeInformation.IsOSPlatform (OSPlatform.Linux)) {
- if (Is_WSL_Platform ()) {
- try {
- using (Process bash = new Process {
- StartInfo = new ProcessStartInfo {
- FileName = "powershell.exe",
- Arguments = $"-noprofile -command \"Set-Clipboard -Value \\\"{clipText}\\\"\""
- }
- }) {
- bash.Start ();
- bash.WaitForExit ();
+ using (Process pwsh = new Process {
+ StartInfo = new ProcessStartInfo {
+ FileName = "powershell",
+ Arguments = $"-command \"Set-Clipboard -Value \\\"{clipText}\\\"\""
}
+ }) {
+ pwsh.Start ();
+ pwsh.WaitForExit ();
+ }
+ getClipText = Clipboard.Contents.ToString ();
- //using (Process clipExe = new Process {
- // StartInfo = new ProcessStartInfo {
- // RedirectStandardInput = true,
- // FileName = "clip.exe"
- // }
- //}) {
- // clipExe.Start ();
- // clipExe.StandardInput.Write (clipText);
- // clipExe.StandardInput.Close ();
- // clipExe.WaitForExit ();
- // //var result = clipExe.WaitForExit (500);
- // //if (result) {
- // // clipExe.WaitForExit ();
- // //}
- //}
- } catch {
- exit = true;
+ } else if (RuntimeInformation.IsOSPlatform (OSPlatform.OSX)) {
+ using (Process copy = new Process {
+ StartInfo = new ProcessStartInfo {
+ RedirectStandardInput = true,
+ FileName = "pbcopy"
+ }
+ }) {
+ copy.Start ();
+ copy.StandardInput.Write (clipText);
+ copy.StandardInput.Close ();
+ copy.WaitForExit ();
+ }
+ getClipText = Clipboard.Contents.ToString ();
+
+ } else if (RuntimeInformation.IsOSPlatform (OSPlatform.Linux)) {
+ if (Is_WSL_Platform ()) {
+ try {
+ using (Process bash = new Process {
+ StartInfo = new ProcessStartInfo {
+ FileName = "powershell.exe",
+ Arguments = $"-noprofile -command \"Set-Clipboard -Value \\\"{clipText}\\\"\""
+ }
+ }) {
+ bash.Start ();
+ bash.WaitForExit ();
+ }
+
+ //using (Process clipExe = new Process {
+ // StartInfo = new ProcessStartInfo {
+ // RedirectStandardInput = true,
+ // FileName = "clip.exe"
+ // }
+ //}) {
+ // clipExe.Start ();
+ // clipExe.StandardInput.Write (clipText);
+ // clipExe.StandardInput.Close ();
+ // clipExe.WaitForExit ();
+ // //var result = clipExe.WaitForExit (500);
+ // //if (result) {
+ // // clipExe.WaitForExit ();
+ // //}
+ //}
+ } catch {
+ exit = true;
+ }
+ if (!exit) {
+ getClipText = Clipboard.Contents.ToString ();
+ }
+ Application.RequestStop ();
+ return;
+ }
+ if (exit = xclipExists () == false) {
+ // xclip doesn't exist then exit.
+ Application.RequestStop ();
+ return;
+ }
+
+ using (Process bash = new Process {
+ StartInfo = new ProcessStartInfo {
+ FileName = "bash",
+ Arguments = $"-c \"xclip -sel clip -i\"",
+ RedirectStandardInput = true,
+ }
+ }) {
+ bash.Start ();
+ bash.StandardInput.Write (clipText);
+ bash.StandardInput.Close ();
+ bash.WaitForExit ();
}
if (!exit) {
getClipText = Clipboard.Contents.ToString ();
}
- Application.RequestStop ();
- return;
- }
- if (exit = xclipExists () == false) {
- // xclip doesn't exist then exit.
- Application.RequestStop ();
- return;
}
- using (Process bash = new Process {
- StartInfo = new ProcessStartInfo {
- FileName = "bash",
- Arguments = $"-c \"xclip -sel clip -i\"",
- RedirectStandardInput = true,
- }
- }) {
- bash.Start ();
- bash.StandardInput.Write (clipText);
- bash.StandardInput.Close ();
- bash.WaitForExit ();
- }
- if (!exit) {
- getClipText = Clipboard.Contents.ToString ();
- }
- }
-
- Application.RequestStop ();
- };
+ Application.RequestStop ();
+ };
+ }
Application.Run ();