mirror of
https://github.com/ShareX/ShareX.git
synced 2024-09-29 17:02:05 +13:00
Fixes unexpected clipboard content viewer behavior (as in #1769)
This commit is contained in:
parent
505a40302a
commit
f00eef28c4
3 changed files with 100 additions and 2 deletions
|
@ -36,6 +36,14 @@ public enum EDataType
|
|||
URL
|
||||
}
|
||||
|
||||
public enum EClipboardContentType
|
||||
{
|
||||
Default,
|
||||
Image,
|
||||
Text,
|
||||
Files
|
||||
}
|
||||
|
||||
public enum PNGBitDepth // Localized
|
||||
{
|
||||
Default,
|
||||
|
|
|
@ -35,6 +35,8 @@ public partial class ClipboardContentViewer : Form
|
|||
{
|
||||
public bool IsClipboardContentValid { get; private set; }
|
||||
public bool DontShowThisWindow { get; private set; }
|
||||
public EClipboardContentType ClipboardContentType { get; private set; }
|
||||
public object ClipboardContent { get; private set; }
|
||||
|
||||
public ClipboardContentViewer(bool showCheckBox = false)
|
||||
{
|
||||
|
@ -59,6 +61,8 @@ private bool CheckClipboardContents()
|
|||
{
|
||||
if (img != null)
|
||||
{
|
||||
ClipboardContentType = EClipboardContentType.Image;
|
||||
ClipboardContent = img.Clone();
|
||||
pbClipboard.LoadImage(img);
|
||||
pbClipboard.Visible = true;
|
||||
lblQuestion.Text = string.Format(Resources.ClipboardContentViewer_ClipboardContentViewer_Load_Clipboard_content__Image__Size___0_x_1__, img.Width, img.Height);
|
||||
|
@ -72,6 +76,8 @@ private bool CheckClipboardContents()
|
|||
|
||||
if (!string.IsNullOrEmpty(text))
|
||||
{
|
||||
ClipboardContentType = EClipboardContentType.Text;
|
||||
ClipboardContent = text;
|
||||
txtClipboard.Text = text;
|
||||
txtClipboard.Visible = true;
|
||||
lblQuestion.Text = string.Format(Resources.ClipboardContentViewer_ClipboardContentViewer_Load_Clipboard_content__Text__Length___0__, text.Length);
|
||||
|
@ -84,6 +90,8 @@ private bool CheckClipboardContents()
|
|||
|
||||
if (files.Length > 0)
|
||||
{
|
||||
ClipboardContentType = EClipboardContentType.Files;
|
||||
ClipboardContent = files;
|
||||
lbClipboard.Items.AddRange(files);
|
||||
lbClipboard.Visible = true;
|
||||
lblQuestion.Text = string.Format(Resources.ClipboardContentViewer_ClipboardContentViewer_Load_Clipboard_content__File__Count___0__, files.Length);
|
||||
|
|
|
@ -211,6 +211,74 @@ public static void ClipboardUpload(TaskSettings taskSettings = null)
|
|||
}
|
||||
}
|
||||
|
||||
public static void ClipboardUploadCached(ClipboardContentViewer ccv, TaskSettings taskSettings = null)
|
||||
{
|
||||
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
|
||||
|
||||
if (ccv.ClipboardContentType == EClipboardContentType.Image)
|
||||
{
|
||||
Image img = (Image)ccv.ClipboardContent;
|
||||
|
||||
if (img != null)
|
||||
{
|
||||
if (!taskSettings.AdvancedSettings.ProcessImagesDuringClipboardUpload)
|
||||
{
|
||||
taskSettings.AfterCaptureJob = AfterCaptureTasks.UploadImageToHost;
|
||||
}
|
||||
|
||||
RunImageTask(img, taskSettings);
|
||||
}
|
||||
}
|
||||
else if (ccv.ClipboardContentType == EClipboardContentType.Text)
|
||||
{
|
||||
string text = (string)ccv.ClipboardContent;
|
||||
|
||||
if (!string.IsNullOrEmpty(text))
|
||||
{
|
||||
string url = text.Trim();
|
||||
|
||||
if (URLHelpers.IsValidURL(url))
|
||||
{
|
||||
if (taskSettings.UploadSettings.ClipboardUploadURLContents)
|
||||
{
|
||||
DownloadAndUploadFile(url, taskSettings);
|
||||
return;
|
||||
}
|
||||
|
||||
if (taskSettings.UploadSettings.ClipboardUploadShortenURL)
|
||||
{
|
||||
ShortenURL(url, taskSettings);
|
||||
return;
|
||||
}
|
||||
|
||||
if (taskSettings.UploadSettings.ClipboardUploadShareURL)
|
||||
{
|
||||
ShareURL(url, taskSettings);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (taskSettings.UploadSettings.ClipboardUploadAutoIndexFolder && text.Length <= 260 && Directory.Exists(text))
|
||||
{
|
||||
IndexFolder(text, taskSettings);
|
||||
}
|
||||
else
|
||||
{
|
||||
UploadText(text, taskSettings, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (ccv.ClipboardContentType == EClipboardContentType.Files)
|
||||
{
|
||||
string[] files = (string[])ccv.ClipboardContent;
|
||||
|
||||
if (files.Length > 0)
|
||||
{
|
||||
UploadFile(files, taskSettings);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void ClipboardUploadWithContentViewer(TaskSettings taskSettings = null)
|
||||
{
|
||||
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
|
||||
|
@ -219,7 +287,14 @@ public static void ClipboardUploadWithContentViewer(TaskSettings taskSettings =
|
|||
{
|
||||
if (ccv.ShowDialog() == DialogResult.OK && ccv.IsClipboardContentValid)
|
||||
{
|
||||
ClipboardUpload(taskSettings);
|
||||
if (ccv.ClipboardContentType != EClipboardContentType.Default)
|
||||
{
|
||||
ClipboardUploadCached(ccv, taskSettings);
|
||||
}
|
||||
else
|
||||
{
|
||||
ClipboardUpload(taskSettings);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -234,7 +309,14 @@ public static void ClipboardUploadMainWindow(TaskSettings taskSettings = null)
|
|||
{
|
||||
if (ccv.ShowDialog() == DialogResult.OK && ccv.IsClipboardContentValid)
|
||||
{
|
||||
ClipboardUpload(taskSettings);
|
||||
if (ccv.ClipboardContentType != EClipboardContentType.Default)
|
||||
{
|
||||
ClipboardUploadCached(ccv, taskSettings);
|
||||
}
|
||||
else
|
||||
{
|
||||
ClipboardUpload(taskSettings);
|
||||
}
|
||||
}
|
||||
|
||||
Program.Settings.ShowClipboardContentViewer = !ccv.DontShowThisWindow;
|
||||
|
|
Loading…
Reference in a new issue