private void BuildAutocompleteList(bool forced)
{
var visibleItems = new List<AutocompleteItem>();
var foundSelected = false;
var selectedIndex = -1;
//get fragment around caret
var fragment = GetFragment(SearchPattern);
var text = fragment.Text;
//
if (sourceItems != null)
if (forced || (text.Length >= MinFragmentLength /* && tb.Selection.Start == tb.Selection.End*/))
{
Fragment = fragment;
//build popup menu
foreach (var item in sourceItems)
{
item.Parent = this;
var res = item.Compare(text);
if (res != CompareResult.Hidden)
visibleItems.Add(item);
if (res == CompareResult.VisibleAndSelected && !foundSelected)
{
foundSelected = true;
selectedIndex = visibleItems.Count - 1;
}
}
}
VisibleItems = visibleItems;
SelectedItemIndex = foundSelected ? selectedIndex : 0;
Host.CalcSize();
}