diff --git a/ShareX/Controls/TaskThumbnailView.cs b/ShareX/Controls/TaskThumbnailView.cs index 8f4b726e2..180d6de81 100644 --- a/ShareX/Controls/TaskThumbnailView.cs +++ b/ShareX/Controls/TaskThumbnailView.cs @@ -119,6 +119,8 @@ public Size ThumbnailSize public delegate void TaskViewMouseEventHandler(object sender, MouseEventArgs e); public event TaskViewMouseEventHandler ContextMenuRequested; + public event EventHandler SelectedPanelChanged; + public TaskThumbnailView() { Panels = new List(); @@ -177,6 +179,7 @@ public void RemovePanel(WorkerTask task) if (panel != null) { Panels.Remove(panel); + SelectedPanels.Remove(panel); flpMain.Controls.Remove(panel); panel.Dispose(); } @@ -202,6 +205,8 @@ public void UnselectAllPanels() { SelectedPanels.Clear(); + OnSelectedPanelChanged(); + foreach (TaskThumbnailPanel panel in Panels) { panel.Selected = false; @@ -210,10 +215,12 @@ public void UnselectAllPanels() protected void OnContextMenuRequested(object sender, MouseEventArgs e) { - if (ContextMenuRequested != null) - { - ContextMenuRequested(sender, e); - } + ContextMenuRequested?.Invoke(sender, e); + } + + protected void OnSelectedPanelChanged() + { + SelectedPanelChanged?.Invoke(this, EventArgs.Empty); } private void FlpMain_MouseEnter(object sender, EventArgs e) @@ -268,10 +275,19 @@ private void Panel_MouseUp(object sender, MouseEventArgs e, TaskThumbnailPanel p } } + OnSelectedPanelChanged(); + if (ModifierKeys != Keys.Control && e.Button == MouseButtons.Right) { OnContextMenuRequested(sender, e); } } + + protected override bool ProcessCmdKey(ref Message msg, Keys keyData) + { + OnKeyDown(new KeyEventArgs(keyData)); + + return base.ProcessCmdKey(ref msg, keyData); + } } } \ No newline at end of file diff --git a/ShareX/Forms/MainForm.Designer.cs b/ShareX/Forms/MainForm.Designer.cs index 3beb10e28..0ad4319b6 100644 --- a/ShareX/Forms/MainForm.Designer.cs +++ b/ShareX/Forms/MainForm.Designer.cs @@ -278,8 +278,10 @@ private void InitializeComponent() this.timerTraySingleClick = new System.Windows.Forms.Timer(this.components); this.pNews = new System.Windows.Forms.Panel(); this.btnCloseNews = new System.Windows.Forms.Button(); + this.ucNews = new ShareX.NewsListControl(); this.pThumbnailView = new System.Windows.Forms.Panel(); this.lblThumbnailViewTip = new System.Windows.Forms.Label(); + this.ucTaskThumbnailView = new ShareX.TaskThumbnailView(); this.ttMain = new System.Windows.Forms.ToolTip(this.components); this.pToolbars = new System.Windows.Forms.Panel(); this.tsSocialButtons = new ShareX.HelpersLib.ToolStripBorderRight(); @@ -288,8 +290,6 @@ private void InitializeComponent() this.tsbPatreon = new System.Windows.Forms.ToolStripButton(); this.tsbBitcoin = new System.Windows.Forms.ToolStripButton(); this.tsbGitHub = new System.Windows.Forms.ToolStripButton(); - this.ucNews = new ShareX.NewsListControl(); - this.ucTaskThumbnailView = new ShareX.TaskThumbnailView(); ((System.ComponentModel.ISupportInitialize)(this.scMain)).BeginInit(); this.scMain.Panel1.SuspendLayout(); this.scMain.Panel2.SuspendLayout(); @@ -2202,6 +2202,12 @@ private void InitializeComponent() this.btnCloseNews.UseVisualStyleBackColor = true; this.btnCloseNews.Click += new System.EventHandler(this.btnCloseNews_Click); // + // ucNews + // + this.ucNews.BackColor = System.Drawing.SystemColors.Window; + resources.ApplyResources(this.ucNews, "ucNews"); + this.ucNews.Name = "ucNews"; + // // pThumbnailView // this.pThumbnailView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(47)))), ((int)(((byte)(56))))); @@ -2219,6 +2225,18 @@ private void InitializeComponent() this.lblThumbnailViewTip.UseMnemonic = false; this.lblThumbnailViewTip.MouseUp += new System.Windows.Forms.MouseEventHandler(this.LblThumbnailViewTip_MouseUp); // + // ucTaskThumbnailView + // + resources.ApplyResources(this.ucTaskThumbnailView, "ucTaskThumbnailView"); + this.ucTaskThumbnailView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(47)))), ((int)(((byte)(56))))); + this.ucTaskThumbnailView.Name = "ucTaskThumbnailView"; + this.ucTaskThumbnailView.ThumbnailSize = new System.Drawing.Size(200, 150); + this.ucTaskThumbnailView.TitleLocation = ShareX.ThumbnailTitleLocation.Top; + this.ucTaskThumbnailView.TitleVisible = true; + this.ucTaskThumbnailView.ContextMenuRequested += new ShareX.TaskThumbnailView.TaskViewMouseEventHandler(this.UcTaskView_ContextMenuRequested); + this.ucTaskThumbnailView.SelectedPanelChanged += new System.EventHandler(this.ucTaskThumbnailView_SelectedPanelChanged); + this.ucTaskThumbnailView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lvUploads_KeyDown); + // // ttMain // this.ttMain.AutoPopDelay = 5000; @@ -2295,22 +2313,6 @@ private void InitializeComponent() this.tsbGitHub.Padding = new System.Windows.Forms.Padding(1); this.tsbGitHub.Click += new System.EventHandler(this.TsbGitHub_Click); // - // ucNews - // - this.ucNews.BackColor = System.Drawing.SystemColors.Window; - resources.ApplyResources(this.ucNews, "ucNews"); - this.ucNews.Name = "ucNews"; - // - // ucTaskThumbnailView - // - resources.ApplyResources(this.ucTaskThumbnailView, "ucTaskThumbnailView"); - this.ucTaskThumbnailView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(47)))), ((int)(((byte)(56))))); - this.ucTaskThumbnailView.Name = "ucTaskThumbnailView"; - this.ucTaskThumbnailView.ThumbnailSize = new System.Drawing.Size(200, 150); - this.ucTaskThumbnailView.TitleLocation = ShareX.ThumbnailTitleLocation.Top; - this.ucTaskThumbnailView.TitleVisible = true; - this.ucTaskThumbnailView.ContextMenuRequested += new ShareX.TaskThumbnailView.TaskViewMouseEventHandler(this.UcTaskView_ContextMenuRequested); - // // MainForm // this.AllowDrop = true; diff --git a/ShareX/Forms/MainForm.cs b/ShareX/Forms/MainForm.cs index bf4f6f83b..0f4885eab 100644 --- a/ShareX/Forms/MainForm.cs +++ b/ShareX/Forms/MainForm.cs @@ -305,7 +305,7 @@ public void UpdateControls() UpdateMainWindowLayout(); UpdateUploaderMenuNames(); UpdateDestinationStates(); - UpdateContextMenu(); + UpdateInfoManager(); UpdateToggleHotkeyButton(); AfterTaskSettingsJobs(); AfterApplicationSettingsJobs(); @@ -610,7 +610,7 @@ private void EnableDisableToolStripMenuItems(params ToolStripDropDownItem[] p } } - private void UpdateContextMenu() + private void UpdateInfoManager() { cmsTaskInfo.SuspendLayout(); @@ -1124,11 +1124,16 @@ private WorkerTask[] GetSelectedTasks() return null; } - private void RemoveTasks(IEnumerable tasks) + private void RemoveTasks(WorkerTask[] tasks) { if (tasks != null) { - tasks.Where(x => x != null && !x.IsWorking).ForEach(TaskManager.Remove); + foreach (WorkerTask task in tasks.Where(x => x != null && !x.IsWorking)) + { + TaskManager.Remove(task); + } + + UpdateInfoManager(); } } @@ -1145,12 +1150,12 @@ private void RemoveSelectedItems() tasks = ucTaskThumbnailView.SelectedPanels.Select(x => x.Task); } - RemoveTasks(tasks); + RemoveTasks(tasks.ToArray()); } private void RemoveAllItems() { - RemoveTasks(lvUploads.Items.Cast().Select(x => x.Tag as WorkerTask)); + RemoveTasks(lvUploads.Items.Cast().Select(x => x.Tag as WorkerTask).ToArray()); } private void UpdateMainWindowLayout() @@ -1448,7 +1453,7 @@ private void lblListViewTip_MouseUp(object sender, MouseEventArgs e) } else if (e.Button == MouseButtons.Right) { - UpdateContextMenu(); + UpdateInfoManager(); cmsTaskInfo.Show((Control)sender, e.X + 1, e.Y + 1); } } @@ -1458,14 +1463,14 @@ private async void lvUploads_SelectedIndexChanged(object sender, EventArgs e) lvUploads.SelectedIndexChanged -= lvUploads_SelectedIndexChanged; await Task.Delay(1); lvUploads.SelectedIndexChanged += lvUploads_SelectedIndexChanged; - UpdateContextMenu(); + UpdateInfoManager(); } private void lvUploads_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { - UpdateContextMenu(); + UpdateInfoManager(); cmsTaskInfo.Show(lvUploads, e.X + 1, e.Y + 1); } } @@ -1536,7 +1541,7 @@ private void lvUploads_KeyDown(object sender, KeyEventArgs e) case Keys.Apps: if (lvUploads.SelectedItems.Count > 0) { - UpdateContextMenu(); + UpdateInfoManager(); Rectangle rect = lvUploads.GetItemRect(lvUploads.SelectedIndex); cmsTaskInfo.Show(lvUploads, new Point(rect.X, rect.Bottom)); } @@ -1546,9 +1551,13 @@ private void lvUploads_KeyDown(object sender, KeyEventArgs e) e.Handled = e.SuppressKeyPress = true; } + private void ucTaskThumbnailView_SelectedPanelChanged(object sender, EventArgs e) + { + UpdateInfoManager(); + } + private void UcTaskView_ContextMenuRequested(object sender, MouseEventArgs e) { - UpdateContextMenu(); cmsTaskInfo.Show(sender as Control, e.X + 1, e.Y + 1); } @@ -2436,35 +2445,35 @@ private void tsmiImagePreviewShow_Click(object sender, EventArgs e) { Program.Settings.ImagePreview = ImagePreviewVisibility.Show; tsmiImagePreviewShow.Check(); - UpdateContextMenu(); + UpdateInfoManager(); } private void tsmiImagePreviewHide_Click(object sender, EventArgs e) { Program.Settings.ImagePreview = ImagePreviewVisibility.Hide; tsmiImagePreviewHide.Check(); - UpdateContextMenu(); + UpdateInfoManager(); } private void tsmiImagePreviewAutomatic_Click(object sender, EventArgs e) { Program.Settings.ImagePreview = ImagePreviewVisibility.Automatic; tsmiImagePreviewAutomatic.Check(); - UpdateContextMenu(); + UpdateInfoManager(); } private void tsmiImagePreviewSide_Click(object sender, EventArgs e) { Program.Settings.ImagePreviewLocation = ImagePreviewLocation.Side; tsmiImagePreviewSide.Check(); - UpdateContextMenu(); + UpdateInfoManager(); } private void tsmiImagePreviewBottom_Click(object sender, EventArgs e) { Program.Settings.ImagePreviewLocation = ImagePreviewLocation.Bottom; tsmiImagePreviewBottom.Check(); - UpdateContextMenu(); + UpdateInfoManager(); } private void TsmiThumbnailTitleShow_Click(object sender, EventArgs e) @@ -2511,7 +2520,7 @@ private void TsmiSwitchTaskViewMode_Click(object sender, EventArgs e) UpdateTaskViewMode(); UpdateMainWindowLayout(); - UpdateContextMenu(); + UpdateInfoManager(); } #endregion UploadInfoMenu events diff --git a/ShareX/Forms/MainForm.resx b/ShareX/Forms/MainForm.resx index 6404b3c48..40c38508d 100644 --- a/ShareX/Forms/MainForm.resx +++ b/ShareX/Forms/MainForm.resx @@ -2112,9 +2112,6 @@ 844, 471 - - NoControl - 510, 250