Prevent file list from redrawing during update

This commit is contained in:
null_ptr 2014-01-13 16:17:56 +00:00
parent 5aae3feeb5
commit 2696ac07a0
1 changed files with 25 additions and 9 deletions

View File

@ -52,10 +52,18 @@ namespace BizHawk.Client.EmuHawk
{
archiveItems.OrderBy(x => x.Name);
lvMembers.Items.Clear();
foreach (ListViewItem i in archiveItems)
lvMembers.BeginUpdate();
try
{
lvMembers.Items.Add(i);
lvMembers.Items.Clear();
foreach (ListViewItem i in archiveItems)
{
lvMembers.Items.Add(i);
}
}
finally
{
lvMembers.EndUpdate();
}
}
@ -121,9 +129,10 @@ namespace BizHawk.Client.EmuHawk
}
private void StartMatching(TextBox tb, Action<IMatcher> func)
{
{
try
{
errorBalloon.Hide(tb);
var searchMatcher = CreateMatcher(tb.Text);
if (searchMatcher != null)
{
@ -142,7 +151,6 @@ namespace BizHawk.Client.EmuHawk
private void DoSearch(IMatcher searchMatcher)
{
errorBalloon.Hide(tbSearch);
int count = lvMembers.Items.Count;
int searchStartIdx = 0;
if (lvMembers.SelectedItems.Count > 0)
@ -175,14 +183,22 @@ namespace BizHawk.Client.EmuHawk
private void DoFilter(IMatcher searchMatcher)
{
lvMembers.Items.Clear();
foreach (ListViewItem item in archiveItems)
lvMembers.BeginUpdate();
try
{
if (searchMatcher.Matches(item))
lvMembers.Items.Clear();
foreach (ListViewItem item in archiveItems)
{
lvMembers.Items.Add(item);
if (searchMatcher.Matches(item))
{
lvMembers.Items.Add(item);
}
}
}
finally
{
lvMembers.EndUpdate();
}
}
private interface IMatcher