diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs
index 43bd9fd35..1e7735fb2 100644
--- a/Flow.Launcher/MainWindow.xaml.cs
+++ b/Flow.Launcher/MainWindow.xaml.cs
@@ -59,14 +59,16 @@ namespace Flow.Launcher
private void OnCopy(object sender, ExecutedRoutedEventArgs e)
{
- if (QueryTextBox.SelectionLength == 0)
+ var result = _viewModel.Results.SelectedItem?.Result;
+ if (QueryTextBox.SelectionLength == 0 && result != null)
{
- _viewModel.ResultCopy(string.Empty);
+ string copyText = result.CopyText;
+ _viewModel.ResultCopy(copyText);
}
else if (!string.IsNullOrEmpty(QueryTextBox.Text))
{
- _viewModel.ResultCopy(QueryTextBox.SelectedText);
+ System.Windows.Clipboard.SetText(QueryTextBox.SelectedText);
}
}
diff --git a/Flow.Launcher/PublicAPIInstance.cs b/Flow.Launcher/PublicAPIInstance.cs
index 800115bfa..b61e22d5e 100644
--- a/Flow.Launcher/PublicAPIInstance.cs
+++ b/Flow.Launcher/PublicAPIInstance.cs
@@ -118,7 +118,7 @@ namespace Flow.Launcher
public void CopyToClipboard(string text)
{
- Clipboard.SetDataObject(text);
+ _mainVM.ResultCopy(text);
}
public void StartLoadingBar() => _mainVM.ProgressBarVisibility = Visibility.Visible;
diff --git a/Flow.Launcher/ViewModel/MainViewModel.cs b/Flow.Launcher/ViewModel/MainViewModel.cs
index 27809f67b..8529df7b3 100644
--- a/Flow.Launcher/ViewModel/MainViewModel.cs
+++ b/Flow.Launcher/ViewModel/MainViewModel.cs
@@ -1104,47 +1104,39 @@ namespace Flow.Launcher.ViewModel
}
///
- /// This is the global copy method for an individual result. If no text is passed,
- /// the method will work out what is to be copied based on the result, so plugin can offer the text
- /// to be copied via the result model. If the text is a directory/file path,
- /// then actual file/folder will be copied instead.
- /// The result's subtitle text is the default text to be copied
+ /// Copies the specified file or folder path to the clipboard, or the specified text if it is not a valid file or folder path.
+ /// Shows a message indicating whether the operation was completed successfully.
///
+ /// The file or folder path, or text to copy to the clipboard.
+ /// Nothing.
public void ResultCopy(string stringToCopy)
{
if (string.IsNullOrEmpty(stringToCopy))
{
- var result = Results.SelectedItem?.Result;
- if (result != null)
- {
- string copyText = result.CopyText;
- var isFile = File.Exists(copyText);
- var isFolder = Directory.Exists(copyText);
- if (isFile || isFolder)
- {
- var paths = new StringCollection
- {
- copyText
- };
-
- Clipboard.SetFileDropList(paths);
- App.API.ShowMsg(
- $"{App.API.GetTranslation("copy")} {(isFile ? App.API.GetTranslation("fileTitle") : App.API.GetTranslation("folderTitle"))}",
- App.API.GetTranslation("completedSuccessfully"));
- }
- else
- {
- Clipboard.SetDataObject(copyText);
- App.API.ShowMsg(
- $"{App.API.GetTranslation("copy")} {App.API.GetTranslation("textTitle")}",
- App.API.GetTranslation("completedSuccessfully"));
- }
- }
-
return;
}
+ var isFile = File.Exists(stringToCopy);
+ var isFolder = Directory.Exists(stringToCopy);
+ if (isFile || isFolder)
+ {
+ var paths = new StringCollection
+ {
+ stringToCopy
+ };
- Clipboard.SetDataObject(stringToCopy);
+ Clipboard.SetFileDropList(paths);
+ App.API.ShowMsg(
+ $"{App.API.GetTranslation("copy")} {(isFile ? App.API.GetTranslation("fileTitle") : App.API.GetTranslation("folderTitle"))}",
+ App.API.GetTranslation("completedSuccessfully"));
+ }
+ else
+ {
+ Clipboard.SetDataObject(stringToCopy);
+ App.API.ShowMsg(
+ $"{App.API.GetTranslation("copy")} {App.API.GetTranslation("textTitle")}",
+ App.API.GetTranslation("completedSuccessfully"));
+ }
+ return;
}
#endregion