Improve capture drop down menu speed

This commit is contained in:
Jaex 2021-08-27 11:31:29 +03:00
parent 3ab41c32a0
commit a6d84d8e76
3 changed files with 44 additions and 40 deletions

View file

@ -302,9 +302,9 @@ private void InitializeComponent()
this.timerTraySingleClick = new System.Windows.Forms.Timer(this.components);
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.ucTaskThumbnailView = new ShareX.TaskThumbnailView();
((System.ComponentModel.ISupportInitialize)(this.scMain)).BeginInit();
this.scMain.Panel1.SuspendLayout();
this.scMain.Panel2.SuspendLayout();
@ -2391,6 +2391,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;
@ -2405,18 +2417,6 @@ private void InitializeComponent()
this.pToolbars.Controls.Add(this.tsMain);
this.pToolbars.Name = "pToolbars";
//
// 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);
//
// MainForm
//
this.AllowDrop = true;

View file

@ -1242,21 +1242,18 @@ private void SetScreenshotDelay(decimal delay)
private async Task PrepareCaptureMenuAsync(ToolStripMenuItem tsmiWindow, EventHandler handlerWindow, ToolStripMenuItem tsmiMonitor, EventHandler handlerMonitor)
{
tsmiWindow.DropDownItems.Clear();
WindowsList windowsList = new WindowsList();
List<WindowInfo> windows = null;
List<WindowInfo> windows = await Task.Run(() => windowsList.GetVisibleWindowsList());
await Task.Run(() =>
if (windows != null && windows.Count > 0)
{
windows = windowsList.GetVisibleWindowsList();
});
ToolStripItem[] items = new ToolStripItem[windows.Count];
if (windows != null)
{
foreach (WindowInfo window in windows)
for (int i = 0; i < items.Length; i++)
{
try
{
WindowInfo window = windows[i];
string title = window.Text.Truncate(50, "...");
ToolStripMenuItem tsmi = new ToolStripMenuItem(title);
tsmi.Tag = window;
@ -1270,29 +1267,39 @@ await Task.Run(() =>
}
}
tsmiWindow.DropDownItems.Add(tsmi);
items[i] = tsmi;
}
catch (Exception e)
{
DebugHelper.WriteException(e);
}
}
}
tsmiMonitor.DropDownItems.Clear();
Screen[] screens = Screen.AllScreens;
for (int i = 0; i < screens.Length; i++)
{
Screen screen = screens[i];
string text = string.Format("{0}. {1}x{2}", i + 1, screen.Bounds.Width, screen.Bounds.Height);
ToolStripItem tsi = tsmiMonitor.DropDownItems.Add(text);
tsi.Tag = screen.Bounds;
tsi.Click += handlerMonitor;
tsmiWindow.DropDownItems.AddRange(items);
}
tsmiWindow.Invalidate();
tsmiMonitor.DropDownItems.Clear();
Screen[] screens = Screen.AllScreens;
if (screens != null && screens.Length > 0)
{
ToolStripItem[] items = new ToolStripItem[screens.Length];
for (int i = 0; i < items.Length; i++)
{
Screen screen = screens[i];
string text = string.Format("{0}. {1}x{2}", i + 1, screen.Bounds.Width, screen.Bounds.Height);
ToolStripMenuItem tsmi = new ToolStripMenuItem(text);
tsmi.Tag = screen.Bounds;
tsmi.Click += handlerMonitor;
items[i] = tsmi;
}
tsmiMonitor.DropDownItems.AddRange(items);
}
tsmiMonitor.Invalidate();
}

View file

@ -292,7 +292,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;scMain.ZOrder" xml:space="preserve">
<value>2</value>
<value>3</value>
</data>
<metadata name="tsMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
@ -2035,7 +2035,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;pThumbnailView.ZOrder" xml:space="preserve">
<value>1</value>
<value>2</value>
</data>
<metadata name="ttMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>567, 17</value>
@ -2065,7 +2065,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;pToolbars.ZOrder" xml:space="preserve">
<value>3</value>
<value>4</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
@ -2079,9 +2079,6 @@
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>844, 471</value>
</data>
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>510, 250</value>
</data>