diff --git a/FastColoredTextBox/AutocompleteMenu.cs b/FastColoredTextBox/AutocompleteMenu.cs index 829783ac..0ac18797 100644 --- a/FastColoredTextBox/AutocompleteMenu.cs +++ b/FastColoredTextBox/AutocompleteMenu.cs @@ -417,11 +417,12 @@ internal void DoAutocomplete(bool forced) } } - if (foundSelected) - { - AdjustScroll(); - DoSelectedVisible(); - } + // redundant call + //if (foundSelected) + //{ + // AdjustScroll(); + // DoSelectedVisible(); + //} } //show popup menu @@ -436,7 +437,7 @@ internal void DoAutocomplete(bool forced) } DoSelectedVisible(); - Invalidate(); + _Invalidate(); } else Menu.Close(); @@ -505,6 +506,11 @@ void AdjustScroll() if (oldItemCount == visibleItems.Count) return; + if (oldItemCount > visibleItems.Count) + { + base.Refresh(); + } + int needHeight = ItemHeight * visibleItems.Count + 1; Height = Math.Min(needHeight, MaximumSize.Height); Menu.CalcSize(); @@ -515,8 +521,6 @@ void AdjustScroll() protected override void OnPaint(PaintEventArgs e) { - AdjustScroll(); - var itemHeight = ItemHeight; int startI = VerticalScroll.Value / itemHeight - 1; int finishI = (VerticalScroll.Value + ClientSize.Height) / itemHeight + 1; @@ -554,10 +558,16 @@ protected override void OnPaint(PaintEventArgs e) } } + protected void _Invalidate() + { + AdjustScroll(); + Invalidate(); + } + protected override void OnScroll(ScrollEventArgs se) { base.OnScroll(se); - Invalidate(); + _Invalidate(); } protected override void OnMouseClick(MouseEventArgs e) @@ -568,7 +578,7 @@ protected override void OnMouseClick(MouseEventArgs e) { FocussedItemIndex = PointToItemIndex(e.Location); DoSelectedVisible(); - Invalidate(); + _Invalidate(); } } @@ -576,7 +586,7 @@ protected override void OnMouseDoubleClick(MouseEventArgs e) { base.OnMouseDoubleClick(e); FocussedItemIndex = PointToItemIndex(e.Location); - Invalidate(); + _Invalidate(); OnSelecting(); } @@ -599,7 +609,7 @@ internal virtual void OnSelecting() if (args.Cancel) { FocussedItemIndex = args.SelectedIndex; - Invalidate(); + _Invalidate(); return; } @@ -704,7 +714,7 @@ public void SelectNext(int shift) FocussedItemIndex = Math.Max(0, Math.Min(FocussedItemIndex + shift, visibleItems.Count - 1)); DoSelectedVisible(); // - Invalidate(); + _Invalidate(); } private void DoSelectedVisible()