mirror of
https://github.com/ShareX/ShareX.git
synced 2024-07-01 04:30:49 +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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
|
@ -447,7 +447,7 @@ private void PbThumbnail_MouseUp(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;
|
||||
|
||||
|
|
|
@ -205,12 +205,12 @@ public void UnselectAllPanels()
|
|||
{
|
||||
SelectedPanels.Clear();
|
||||
|
||||
OnSelectedPanelChanged();
|
||||
|
||||
foreach (TaskThumbnailPanel panel in Panels)
|
||||
{
|
||||
panel.Selected = false;
|
||||
}
|
||||
|
||||
OnSelectedPanelChanged();
|
||||
}
|
||||
|
||||
protected void OnContextMenuRequested(object sender, MouseEventArgs e)
|
||||
|
@ -264,6 +264,26 @@ private void Panel_MouseUp(object sender, MouseEventArgs e, TaskThumbnailPanel p
|
|||
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
|
||||
{
|
||||
if (!panel.Selected)
|
||||
|
@ -277,7 +297,7 @@ private void Panel_MouseUp(object sender, MouseEventArgs e, TaskThumbnailPanel p
|
|||
|
||||
OnSelectedPanelChanged();
|
||||
|
||||
if (ModifierKeys != Keys.Control && e.Button == MouseButtons.Right)
|
||||
if (e.Button == MouseButtons.Right)
|
||||
{
|
||||
OnContextMenuRequested(sender, e);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue