mirror of
https://github.com/ShareX/ShareX.git
synced 2024-07-05 06:30:36 +12:00
#4280: Support shift click selection of thumbnail panels
This commit is contained in:
parent
69afd98332
commit
f95b3bdd1d
|
@ -755,5 +755,30 @@ public static void SupportDarkTheme(this ListView lv)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<T> Range<T>(this List<T> source, int start, int end)
|
||||||
|
{
|
||||||
|
if (start > end)
|
||||||
|
{
|
||||||
|
int temp = start;
|
||||||
|
start = end;
|
||||||
|
end = temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
int length = end - start + 1;
|
||||||
|
|
||||||
|
return source.GetRange(start, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<T> Range<T>(this List<T> source, T start, T end)
|
||||||
|
{
|
||||||
|
int startIndex = source.IndexOf(start);
|
||||||
|
if (startIndex == -1) return new List<T>();
|
||||||
|
|
||||||
|
int endIndex = source.IndexOf(end);
|
||||||
|
if (endIndex == -1) return new List<T>();
|
||||||
|
|
||||||
|
return Range(source, startIndex, endIndex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -411,7 +411,7 @@ public void ClearThumbnail()
|
||||||
|
|
||||||
private void LblTitle_MouseClick(object sender, MouseEventArgs e)
|
private void LblTitle_MouseClick(object sender, MouseEventArgs e)
|
||||||
{
|
{
|
||||||
if (ModifierKeys != Keys.Control && e.Button == MouseButtons.Left && Task.Info != null)
|
if (ModifierKeys == Keys.None && e.Button == MouseButtons.Left && Task.Info != null)
|
||||||
{
|
{
|
||||||
if (Task.Info.Result != null)
|
if (Task.Info.Result != null)
|
||||||
{
|
{
|
||||||
|
@ -447,7 +447,7 @@ private void PbThumbnail_MouseUp(object sender, MouseEventArgs e)
|
||||||
|
|
||||||
private void PbThumbnail_MouseClick(object sender, MouseEventArgs e)
|
private void PbThumbnail_MouseClick(object sender, MouseEventArgs e)
|
||||||
{
|
{
|
||||||
if (ThumbnailSupportsClick && ModifierKeys != Keys.Control && e.Button == MouseButtons.Left && Task.Info != null)
|
if (ThumbnailSupportsClick && ModifierKeys == Keys.None && e.Button == MouseButtons.Left && Task.Info != null)
|
||||||
{
|
{
|
||||||
string filePath = Task.Info.FilePath;
|
string filePath = Task.Info.FilePath;
|
||||||
|
|
||||||
|
|
|
@ -205,12 +205,12 @@ public void UnselectAllPanels()
|
||||||
{
|
{
|
||||||
SelectedPanels.Clear();
|
SelectedPanels.Clear();
|
||||||
|
|
||||||
OnSelectedPanelChanged();
|
|
||||||
|
|
||||||
foreach (TaskThumbnailPanel panel in Panels)
|
foreach (TaskThumbnailPanel panel in Panels)
|
||||||
{
|
{
|
||||||
panel.Selected = false;
|
panel.Selected = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OnSelectedPanelChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnContextMenuRequested(object sender, MouseEventArgs e)
|
protected void OnContextMenuRequested(object sender, MouseEventArgs e)
|
||||||
|
@ -264,6 +264,26 @@ private void Panel_MouseUp(object sender, MouseEventArgs e, TaskThumbnailPanel p
|
||||||
SelectedPanels.Add(panel);
|
SelectedPanels.Add(panel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (ModifierKeys == Keys.Shift)
|
||||||
|
{
|
||||||
|
if (SelectedPanels.Count > 0)
|
||||||
|
{
|
||||||
|
TaskThumbnailPanel lastPanel = SelectedPanels[SelectedPanels.Count - 1];
|
||||||
|
|
||||||
|
UnselectAllPanels();
|
||||||
|
|
||||||
|
foreach (TaskThumbnailPanel p in Panels.Range(panel, lastPanel))
|
||||||
|
{
|
||||||
|
p.Selected = true;
|
||||||
|
SelectedPanels.Add(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
panel.Selected = true;
|
||||||
|
SelectedPanels.Add(panel);
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!panel.Selected)
|
if (!panel.Selected)
|
||||||
|
@ -277,7 +297,7 @@ private void Panel_MouseUp(object sender, MouseEventArgs e, TaskThumbnailPanel p
|
||||||
|
|
||||||
OnSelectedPanelChanged();
|
OnSelectedPanelChanged();
|
||||||
|
|
||||||
if (ModifierKeys != Keys.Control && e.Button == MouseButtons.Right)
|
if (e.Button == MouseButtons.Right)
|
||||||
{
|
{
|
||||||
OnContextMenuRequested(sender, e);
|
OnContextMenuRequested(sender, e);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue