From 0857174538e7a2d6562bd2b24dbaeaeac1e207eb Mon Sep 17 00:00:00 2001 From: Jaex Date: Sun, 24 Apr 2016 17:43:57 +0300 Subject: [PATCH] Hold CTRL when dragging to copy URLs --- ShareX/Forms/MainForm.cs | 31 +++++++++++++++++++++++++++---- ShareX/TaskInfo.cs | 8 ++------ 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/ShareX/Forms/MainForm.cs b/ShareX/Forms/MainForm.cs index bca5e7af5..0095b9b84 100644 --- a/ShareX/Forms/MainForm.cs +++ b/ShareX/Forms/MainForm.cs @@ -1278,14 +1278,37 @@ private void lvUploads_KeyDown(object sender, KeyEventArgs e) private void lvUploads_ItemDrag(object sender, ItemDragEventArgs e) { - TaskInfo[] taskInfos = GetCurrentTasks().Select(x => x.Info).Where(x => x != null && !string.IsNullOrEmpty(x.FilePath) && File.Exists(x.FilePath)).ToArray(); + TaskInfo[] taskInfos = GetCurrentTasks().Select(x => x.Info).Where(x => x != null).ToArray(); if (taskInfos.Length > 0) { - AllowDrop = false; + IDataObject dataObject = null; - IDataObject dataObject = new DataObject(DataFormats.FileDrop, taskInfos.Select(x => x.FilePath).ToArray()); - lvUploads.DoDragDrop(dataObject, DragDropEffects.Copy); + if (ModifierKeys.HasFlag(Keys.Control)) + { + string[] urls = taskInfos.Select(x => x.ToString()).Where(x => !string.IsNullOrEmpty(x)).ToArray(); + + if (urls.Length > 0) + { + dataObject = new DataObject(DataFormats.Text, string.Join(Environment.NewLine, urls)); + } + } + else + { + string[] files = taskInfos.Select(x => x.FilePath).Where(x => !string.IsNullOrEmpty(x) && File.Exists(x)).ToArray(); + + if (files.Length > 0) + { + dataObject = new DataObject(DataFormats.FileDrop, files); + } + } + + if (dataObject != null) + { + AllowDrop = false; + + lvUploads.DoDragDrop(dataObject, DragDropEffects.Copy); + } } } diff --git a/ShareX/TaskInfo.cs b/ShareX/TaskInfo.cs index e8b7ea10e..5597fdfca 100644 --- a/ShareX/TaskInfo.cs +++ b/ShareX/TaskInfo.cs @@ -152,13 +152,9 @@ public TaskInfo(TaskSettings taskSettings) public override string ToString() { - string text = ""; + string text = Result.ToString(); - if (!string.IsNullOrEmpty(Result.ToString())) - { - text = Result.ToString(); - } - else if (!string.IsNullOrEmpty(FilePath)) + if (string.IsNullOrEmpty(text) && !string.IsNullOrEmpty(FilePath)) { text = FilePath; }