From 928c3a7fcbd5a707ffca75ffeba5bcacc93dcb5e Mon Sep 17 00:00:00 2001 From: Jaex Date: Wed, 2 Oct 2019 08:53:56 +0300 Subject: [PATCH 1/4] Initial work to support multi selection of thumbnail panels --- ShareX/Controls/TaskThumbnailView.cs | 36 ++++++++++++++++++++++------ ShareX/Forms/MainForm.cs | 31 ++++++++++++++---------- ShareX/UploadInfoManager.cs | 24 ++++--------------- 3 files changed, 52 insertions(+), 39 deletions(-) diff --git a/ShareX/Controls/TaskThumbnailView.cs b/ShareX/Controls/TaskThumbnailView.cs index 6660038c1..4b1854330 100644 --- a/ShareX/Controls/TaskThumbnailView.cs +++ b/ShareX/Controls/TaskThumbnailView.cs @@ -34,7 +34,20 @@ namespace ShareX public partial class TaskThumbnailView : UserControl { public List Panels { get; private set; } - public TaskThumbnailPanel SelectedPanel { get; private set; } + public List SelectedPanels { get; private set; } + + public TaskThumbnailPanel SelectedPanel + { + get + { + if (SelectedPanels.Count > 0) + { + return SelectedPanels[SelectedPanels.Count - 1]; + } + + return null; + } + } private bool titleVisible = true; @@ -102,12 +115,13 @@ public Size ThumbnailSize } } - public delegate void TaskViewMouseEventHandler(object sender, MouseEventArgs e, WorkerTask task); + public delegate void TaskViewMouseEventHandler(object sender, MouseEventArgs e); public event TaskViewMouseEventHandler ContextMenuRequested; public TaskThumbnailView() { Panels = new List(); + SelectedPanels = new List(); InitializeComponent(); UpdateTheme(); @@ -139,7 +153,15 @@ private TaskThumbnailPanel CreatePanel(WorkerTask task) { TaskThumbnailPanel panel = new TaskThumbnailPanel(task); panel.MouseEnter += FlpMain_MouseEnter; - panel.MouseDown += (sender, e) => SelectedPanel = panel; + panel.MouseDown += (sender, e) => + { + if (ModifierKeys == Keys.Control) + { + SelectedPanels.Clear(); + } + + SelectedPanels.Add(panel); + }; panel.MouseUp += Panel_MouseUp; panel.ThumbnailSize = ThumbnailSize; panel.TitleVisible = TitleVisible; @@ -184,11 +206,11 @@ public void UpdateAllThumbnails(bool forceUpdate = false) } } - protected void OnContextMenuRequested(object sender, MouseEventArgs e, WorkerTask task) + protected void OnContextMenuRequested(object sender, MouseEventArgs e) { if (ContextMenuRequested != null) { - ContextMenuRequested(sender, e, task); + ContextMenuRequested(sender, e); } } @@ -203,14 +225,14 @@ private void FlpMain_MouseEnter(object sender, System.EventArgs e) private void FlpMain_MouseDown(object sender, MouseEventArgs e) { - SelectedPanel = null; + SelectedPanels.Clear(); } private void Panel_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { - OnContextMenuRequested(sender, e, SelectedPanel?.Task); + OnContextMenuRequested(sender, e); } } } diff --git a/ShareX/Forms/MainForm.cs b/ShareX/Forms/MainForm.cs index 672d85133..bf4f6f83b 100644 --- a/ShareX/Forms/MainForm.cs +++ b/ShareX/Forms/MainForm.cs @@ -169,7 +169,7 @@ private void InitializeControls() TaskManager.TaskListView = new TaskListView(lvUploads); TaskManager.TaskThumbnailView = ucTaskThumbnailView; - uim = new UploadInfoManager(lvUploads); + uim = new UploadInfoManager(); // Required for BackColor Transparent to work lblListViewTip.Parent = lvUploads; @@ -610,7 +610,7 @@ private void EnableDisableToolStripMenuItems(params ToolStripDropDownItem[] p } } - private void UpdateContextMenu(WorkerTask task = null) + private void UpdateContextMenu() { cmsTaskInfo.SuspendLayout(); @@ -622,7 +622,7 @@ private void UpdateContextMenu(WorkerTask task = null) if (Program.Settings.TaskViewMode == TaskViewMode.ListView) { pbPreview.Reset(); - uim.RefreshSelectedItems(); + uim.UpdateSelectedItems(lvUploads.SelectedItems.Cast().Select(x => x.Tag as WorkerTask)); switch (Program.Settings.ImagePreview) { @@ -647,9 +647,9 @@ private void UpdateContextMenu(WorkerTask task = null) break; } } - else + else if (Program.Settings.TaskViewMode == TaskViewMode.ThumbnailView) { - uim.SelectItem(task); + uim.UpdateSelectedItems(ucTaskThumbnailView.SelectedPanels.Select(x => x.Task)); } if (uim.IsItemSelected) @@ -1126,19 +1126,26 @@ private WorkerTask[] GetSelectedTasks() private void RemoveTasks(IEnumerable tasks) { - tasks.Where(x => x != null && !x.IsWorking).ForEach(TaskManager.Remove); + if (tasks != null) + { + tasks.Where(x => x != null && !x.IsWorking).ForEach(TaskManager.Remove); + } } private void RemoveSelectedItems() { + IEnumerable tasks = null; + if (Program.Settings.TaskViewMode == TaskViewMode.ListView) { - RemoveTasks(lvUploads.SelectedItems.Cast().Select(x => x.Tag as WorkerTask)); + tasks = lvUploads.SelectedItems.Cast().Select(x => x.Tag as WorkerTask); } - else if (Program.Settings.TaskViewMode == TaskViewMode.ThumbnailView && ucTaskThumbnailView.SelectedPanel != null) + else if (Program.Settings.TaskViewMode == TaskViewMode.ThumbnailView) { - RemoveTasks(new WorkerTask[] { ucTaskThumbnailView.SelectedPanel.Task }); + tasks = ucTaskThumbnailView.SelectedPanels.Select(x => x.Task); } + + RemoveTasks(tasks); } private void RemoveAllItems() @@ -1539,9 +1546,9 @@ private void lvUploads_KeyDown(object sender, KeyEventArgs e) e.Handled = e.SuppressKeyPress = true; } - private void UcTaskView_ContextMenuRequested(object sender, MouseEventArgs e, WorkerTask task) + private void UcTaskView_ContextMenuRequested(object sender, MouseEventArgs e) { - UpdateContextMenu(task); + UpdateContextMenu(); cmsTaskInfo.Show(sender as Control, e.X + 1, e.Y + 1); } @@ -1549,7 +1556,7 @@ private void LblThumbnailViewTip_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { - UcTaskView_ContextMenuRequested(lblThumbnailViewTip, e, null); + UcTaskView_ContextMenuRequested(lblThumbnailViewTip, e); } } diff --git a/ShareX/UploadInfoManager.cs b/ShareX/UploadInfoManager.cs index 20cc516fe..94e926586 100644 --- a/ShareX/UploadInfoManager.cs +++ b/ShareX/UploadInfoManager.cs @@ -32,7 +32,6 @@ You should have received a copy of the GNU General Public License using System.IO; using System.Linq; using System.Threading.Tasks; -using System.Windows.Forms; namespace ShareX { @@ -61,33 +60,18 @@ public bool IsItemSelected } } - private ListView lv; private UploadInfoParser parser; - public UploadInfoManager(ListView listView) + public UploadInfoManager() { - lv = listView; parser = new UploadInfoParser(); } - public void RefreshSelectedItems() + public void UpdateSelectedItems(IEnumerable tasks) { - if (lv != null && lv.SelectedItems != null && lv.SelectedItems.Count > 0) + if (tasks != null && tasks.Count() > 0) { - SelectedItems = lv.SelectedItems.Cast().Select(x => x.Tag as WorkerTask).Where(x => x != null && x.Info != null). - Select(x => new UploadInfoStatus(x)).ToArray(); - } - else - { - SelectedItems = null; - } - } - - public void SelectItem(WorkerTask task) - { - if (task != null && task.Info != null) - { - SelectedItems = new UploadInfoStatus[] { new UploadInfoStatus(task) }; + SelectedItems = tasks.Where(x => x != null && x.Info != null).Select(x => new UploadInfoStatus(x)).ToArray(); } else { From a62cc8c7004c34047f1e58897b9401ac5dcb9480 Mon Sep 17 00:00:00 2001 From: Jaex Date: Wed, 2 Oct 2019 09:56:43 +0300 Subject: [PATCH 2/4] Show checkbox when panel is selected --- .../Controls/TaskThumbnailPanel.Designer.cs | 17 +++++ ShareX/Controls/TaskThumbnailPanel.cs | 21 +++++- ShareX/Controls/TaskThumbnailView.Designer.cs | 4 +- ShareX/Controls/TaskThumbnailView.cs | 66 +++++++++++++++---- 4 files changed, 91 insertions(+), 17 deletions(-) diff --git a/ShareX/Controls/TaskThumbnailPanel.Designer.cs b/ShareX/Controls/TaskThumbnailPanel.Designer.cs index 49b3b5be9..a7975d2ca 100644 --- a/ShareX/Controls/TaskThumbnailPanel.Designer.cs +++ b/ShareX/Controls/TaskThumbnailPanel.Designer.cs @@ -34,6 +34,7 @@ private void InitializeComponent() this.components = new System.ComponentModel.Container(); this.lblTitle = new ShareX.HelpersLib.BlackStyleLabel(); this.ttMain = new System.Windows.Forms.ToolTip(this.components); + this.cbSelected = new ShareX.HelpersLib.BlackStyleCheckBox(); this.pThumbnail = new ShareX.TaskRoundedCornerPanel(); this.pbProgress = new ShareX.HelpersLib.BlackStyleProgressBar(); this.pbThumbnail = new System.Windows.Forms.PictureBox(); @@ -63,9 +64,23 @@ private void InitializeComponent() this.ttMain.ReshowDelay = 100; this.ttMain.Draw += new System.Windows.Forms.DrawToolTipEventHandler(this.TtMain_Draw); // + // cbSelected + // + this.cbSelected.BackColor = System.Drawing.Color.Transparent; + this.cbSelected.Checked = true; + this.cbSelected.Font = new System.Drawing.Font("Arial", 8F); + this.cbSelected.ForeColor = System.Drawing.Color.White; + this.cbSelected.Location = new System.Drawing.Point(8, 8); + this.cbSelected.Name = "cbSelected"; + this.cbSelected.Size = new System.Drawing.Size(13, 13); + this.cbSelected.SpaceAfterCheckBox = 3; + this.cbSelected.TabIndex = 2; + this.cbSelected.Visible = false; + // // pThumbnail // this.pThumbnail.BackColor = System.Drawing.Color.Transparent; + this.pThumbnail.Controls.Add(this.cbSelected); this.pThumbnail.Controls.Add(this.pbProgress); this.pThumbnail.Controls.Add(this.pbThumbnail); this.pThumbnail.Location = new System.Drawing.Point(0, 24); @@ -74,6 +89,7 @@ private void InitializeComponent() this.pThumbnail.PanelColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(32)))), ((int)(((byte)(38))))); this.pThumbnail.Radius = 5F; this.pThumbnail.Size = new System.Drawing.Size(256, 256); + this.pThumbnail.StatusLocation = ShareX.ThumbnailTitleLocation.Top; this.pThumbnail.TabIndex = 0; this.pThumbnail.MouseClick += new System.Windows.Forms.MouseEventHandler(this.PbThumbnail_MouseClick); // @@ -128,5 +144,6 @@ private void InitializeComponent() private HelpersLib.BlackStyleProgressBar pbProgress; private System.Windows.Forms.PictureBox pbThumbnail; private System.Windows.Forms.ToolTip ttMain; + private HelpersLib.BlackStyleCheckBox cbSelected; } } diff --git a/ShareX/Controls/TaskThumbnailPanel.cs b/ShareX/Controls/TaskThumbnailPanel.cs index 43323fdd2..18991d959 100644 --- a/ShareX/Controls/TaskThumbnailPanel.cs +++ b/ShareX/Controls/TaskThumbnailPanel.cs @@ -96,6 +96,25 @@ public partial class TaskThumbnailPanel : UserControl public WorkerTask Task { get; private set; } + private bool selected; + + public bool Selected + { + get + { + return selected; + } + set + { + if (selected != value) + { + selected = value; + + cbSelected.Visible = selected; + } + } + } + private string title; public string Title @@ -428,7 +447,7 @@ private void PbThumbnail_MouseUp(object sender, MouseEventArgs e) private void PbThumbnail_MouseClick(object sender, MouseEventArgs e) { - if (ThumbnailSupportsClick && e.Button == MouseButtons.Left && Task.Info != null) + if (ThumbnailSupportsClick && ModifierKeys != Keys.Control && e.Button == MouseButtons.Left && Task.Info != null) { string filePath = Task.Info.FilePath; diff --git a/ShareX/Controls/TaskThumbnailView.Designer.cs b/ShareX/Controls/TaskThumbnailView.Designer.cs index 614401c15..43c1220f1 100644 --- a/ShareX/Controls/TaskThumbnailView.Designer.cs +++ b/ShareX/Controls/TaskThumbnailView.Designer.cs @@ -42,7 +42,7 @@ private void InitializeComponent() this.flpMain.TabIndex = 0; this.flpMain.MouseDown += new System.Windows.Forms.MouseEventHandler(this.FlpMain_MouseDown); this.flpMain.MouseEnter += new System.EventHandler(this.FlpMain_MouseEnter); - this.flpMain.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Panel_MouseUp); + this.flpMain.MouseUp += new System.Windows.Forms.MouseEventHandler(this.TaskThumbnailView_MouseUp); // // TaskThumbnailView // @@ -55,7 +55,7 @@ private void InitializeComponent() this.Size = new System.Drawing.Size(242, 228); this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.FlpMain_MouseDown); this.MouseEnter += new System.EventHandler(this.FlpMain_MouseEnter); - this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Panel_MouseUp); + this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.TaskThumbnailView_MouseUp); this.ResumeLayout(false); this.PerformLayout(); diff --git a/ShareX/Controls/TaskThumbnailView.cs b/ShareX/Controls/TaskThumbnailView.cs index 4b1854330..8f4b726e2 100644 --- a/ShareX/Controls/TaskThumbnailView.cs +++ b/ShareX/Controls/TaskThumbnailView.cs @@ -24,6 +24,7 @@ You should have received a copy of the GNU General Public License #endregion License Information (GPL v3) using ShareX.HelpersLib; +using System; using System.Collections.Generic; using System.Drawing; using System.Linq; @@ -153,16 +154,7 @@ private TaskThumbnailPanel CreatePanel(WorkerTask task) { TaskThumbnailPanel panel = new TaskThumbnailPanel(task); panel.MouseEnter += FlpMain_MouseEnter; - panel.MouseDown += (sender, e) => - { - if (ModifierKeys == Keys.Control) - { - SelectedPanels.Clear(); - } - - SelectedPanels.Add(panel); - }; - panel.MouseUp += Panel_MouseUp; + panel.MouseUp += (object sender, MouseEventArgs e) => Panel_MouseUp(sender, e, panel); panel.ThumbnailSize = ThumbnailSize; panel.TitleVisible = TitleVisible; panel.TitleLocation = TitleLocation; @@ -206,6 +198,16 @@ public void UpdateAllThumbnails(bool forceUpdate = false) } } + public void UnselectAllPanels() + { + SelectedPanels.Clear(); + + foreach (TaskThumbnailPanel panel in Panels) + { + panel.Selected = false; + } + } + protected void OnContextMenuRequested(object sender, MouseEventArgs e) { if (ContextMenuRequested != null) @@ -214,7 +216,7 @@ protected void OnContextMenuRequested(object sender, MouseEventArgs e) } } - private void FlpMain_MouseEnter(object sender, System.EventArgs e) + private void FlpMain_MouseEnter(object sender, EventArgs e) { // Workaround to handle mouse wheel scrolling in Windows 7 if (NativeMethods.GetForegroundWindow() == ParentForm.Handle && !flpMain.Focused) @@ -225,12 +227,48 @@ private void FlpMain_MouseEnter(object sender, System.EventArgs e) private void FlpMain_MouseDown(object sender, MouseEventArgs e) { - SelectedPanels.Clear(); + UnselectAllPanels(); } - private void Panel_MouseUp(object sender, MouseEventArgs e) + private void TaskThumbnailView_MouseUp(object sender, MouseEventArgs e) { - if (e.Button == MouseButtons.Right) + Panel_MouseUp(sender, e, null); + } + + private void Panel_MouseUp(object sender, MouseEventArgs e, TaskThumbnailPanel panel) + { + if (panel == null) + { + UnselectAllPanels(); + } + + if (panel != null) + { + if (ModifierKeys == Keys.Control) + { + if (panel.Selected) + { + panel.Selected = false; + SelectedPanels.Remove(panel); + } + else + { + panel.Selected = true; + SelectedPanels.Add(panel); + } + } + else + { + if (!panel.Selected) + { + UnselectAllPanels(); + panel.Selected = true; + SelectedPanels.Add(panel); + } + } + } + + if (ModifierKeys != Keys.Control && e.Button == MouseButtons.Right) { OnContextMenuRequested(sender, e); } From a2f9e0687129ad5349ac934f6499e5be847d6bc5 Mon Sep 17 00:00:00 2001 From: Jaex Date: Wed, 2 Oct 2019 10:07:18 +0300 Subject: [PATCH 3/4] Ignore click on checkbox --- .../Controls/BlackStyle/BlackStyleCheckBox.cs | 9 ++- .../Controls/TaskThumbnailPanel.Designer.cs | 58 +++++++++---------- 2 files changed, 37 insertions(+), 30 deletions(-) diff --git a/ShareX.HelpersLib/Controls/BlackStyle/BlackStyleCheckBox.cs b/ShareX.HelpersLib/Controls/BlackStyle/BlackStyleCheckBox.cs index 2b75dd9a3..6ad8f316f 100644 --- a/ShareX.HelpersLib/Controls/BlackStyle/BlackStyleCheckBox.cs +++ b/ShareX.HelpersLib/Controls/BlackStyle/BlackStyleCheckBox.cs @@ -76,8 +76,12 @@ public override string Text } } + [DefaultValue(3)] public int SpaceAfterCheckBox { get; set; } + [DefaultValue(false)] + public bool IgnoreClick { get; set; } + private bool isChecked, isHover; private string text; @@ -151,7 +155,10 @@ protected override void OnClick(EventArgs e) { base.OnClick(e); - Checked = !Checked; + if (!IgnoreClick) + { + Checked = !Checked; + } } protected virtual void OnCheckedChanged(EventArgs e) diff --git a/ShareX/Controls/TaskThumbnailPanel.Designer.cs b/ShareX/Controls/TaskThumbnailPanel.Designer.cs index a7975d2ca..6fc54f3fe 100644 --- a/ShareX/Controls/TaskThumbnailPanel.Designer.cs +++ b/ShareX/Controls/TaskThumbnailPanel.Designer.cs @@ -32,30 +32,16 @@ protected override void Dispose(bool disposing) private void InitializeComponent() { this.components = new System.ComponentModel.Container(); - this.lblTitle = new ShareX.HelpersLib.BlackStyleLabel(); this.ttMain = new System.Windows.Forms.ToolTip(this.components); - this.cbSelected = new ShareX.HelpersLib.BlackStyleCheckBox(); this.pThumbnail = new ShareX.TaskRoundedCornerPanel(); + this.cbSelected = new ShareX.HelpersLib.BlackStyleCheckBox(); this.pbProgress = new ShareX.HelpersLib.BlackStyleProgressBar(); this.pbThumbnail = new System.Windows.Forms.PictureBox(); + this.lblTitle = new ShareX.HelpersLib.BlackStyleLabel(); this.pThumbnail.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pbThumbnail)).BeginInit(); this.SuspendLayout(); // - // lblTitle - // - this.lblTitle.AutoEllipsis = true; - this.lblTitle.BackColor = System.Drawing.Color.Transparent; - this.lblTitle.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblTitle.ForeColor = System.Drawing.Color.White; - this.lblTitle.Location = new System.Drawing.Point(0, 0); - this.lblTitle.Name = "lblTitle"; - this.lblTitle.Size = new System.Drawing.Size(256, 22); - this.lblTitle.TabIndex = 1; - this.lblTitle.Text = "Test.png"; - this.lblTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.lblTitle.MouseClick += new System.Windows.Forms.MouseEventHandler(this.LblTitle_MouseClick); - // // ttMain // this.ttMain.AutoPopDelay = 5000; @@ -64,19 +50,6 @@ private void InitializeComponent() this.ttMain.ReshowDelay = 100; this.ttMain.Draw += new System.Windows.Forms.DrawToolTipEventHandler(this.TtMain_Draw); // - // cbSelected - // - this.cbSelected.BackColor = System.Drawing.Color.Transparent; - this.cbSelected.Checked = true; - this.cbSelected.Font = new System.Drawing.Font("Arial", 8F); - this.cbSelected.ForeColor = System.Drawing.Color.White; - this.cbSelected.Location = new System.Drawing.Point(8, 8); - this.cbSelected.Name = "cbSelected"; - this.cbSelected.Size = new System.Drawing.Size(13, 13); - this.cbSelected.SpaceAfterCheckBox = 3; - this.cbSelected.TabIndex = 2; - this.cbSelected.Visible = false; - // // pThumbnail // this.pThumbnail.BackColor = System.Drawing.Color.Transparent; @@ -93,6 +66,19 @@ private void InitializeComponent() this.pThumbnail.TabIndex = 0; this.pThumbnail.MouseClick += new System.Windows.Forms.MouseEventHandler(this.PbThumbnail_MouseClick); // + // cbSelected + // + this.cbSelected.BackColor = System.Drawing.Color.Transparent; + this.cbSelected.Checked = true; + this.cbSelected.Font = new System.Drawing.Font("Arial", 8F); + this.cbSelected.ForeColor = System.Drawing.Color.White; + this.cbSelected.IgnoreClick = true; + this.cbSelected.Location = new System.Drawing.Point(4, 4); + this.cbSelected.Name = "cbSelected"; + this.cbSelected.Size = new System.Drawing.Size(13, 13); + this.cbSelected.TabIndex = 2; + this.cbSelected.Visible = false; + // // pbProgress // this.pbProgress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) @@ -122,6 +108,20 @@ private void InitializeComponent() this.pbThumbnail.MouseMove += new System.Windows.Forms.MouseEventHandler(this.PbThumbnail_MouseMove); this.pbThumbnail.MouseUp += new System.Windows.Forms.MouseEventHandler(this.PbThumbnail_MouseUp); // + // lblTitle + // + this.lblTitle.AutoEllipsis = true; + this.lblTitle.BackColor = System.Drawing.Color.Transparent; + this.lblTitle.Font = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblTitle.ForeColor = System.Drawing.Color.White; + this.lblTitle.Location = new System.Drawing.Point(0, 0); + this.lblTitle.Name = "lblTitle"; + this.lblTitle.Size = new System.Drawing.Size(256, 22); + this.lblTitle.TabIndex = 1; + this.lblTitle.Text = "Test.png"; + this.lblTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lblTitle.MouseClick += new System.Windows.Forms.MouseEventHandler(this.LblTitle_MouseClick); + // // TaskThumbnailPanel // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); From 4362f832da8ae47afe8d74dc716045a26715a444 Mon Sep 17 00:00:00 2001 From: Jaex Date: Wed, 2 Oct 2019 10:20:59 +0300 Subject: [PATCH 4/4] Ignore label click when ctrl hold --- ShareX/Controls/TaskThumbnailPanel.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ShareX/Controls/TaskThumbnailPanel.cs b/ShareX/Controls/TaskThumbnailPanel.cs index 18991d959..09c3a7182 100644 --- a/ShareX/Controls/TaskThumbnailPanel.cs +++ b/ShareX/Controls/TaskThumbnailPanel.cs @@ -411,7 +411,7 @@ public void ClearThumbnail() private void LblTitle_MouseClick(object sender, MouseEventArgs e) { - if (e.Button == MouseButtons.Left && Task.Info != null) + if (ModifierKeys != Keys.Control && e.Button == MouseButtons.Left && Task.Info != null) { if (Task.Info.Result != null) {