diff --git a/Terminal.Gui/Views/ListView.cs b/Terminal.Gui/Views/ListView.cs index 3e38092be..36d9d64b3 100644 --- a/Terminal.Gui/Views/ListView.cs +++ b/Terminal.Gui/Views/ListView.cs @@ -802,8 +802,6 @@ namespace Terminal.Gui { selected = top + me.Y; if (AllowsAll ()) { Source.SetMark (SelectedItem, !Source.IsMarked (SelectedItem)); - SetNeedsDisplay (); - return true; } OnSelectedChanged (); SetNeedsDisplay (); diff --git a/UnitTests/Views/ListViewTests.cs b/UnitTests/Views/ListViewTests.cs index 145caf85d..2241c355f 100644 --- a/UnitTests/Views/ListViewTests.cs +++ b/UnitTests/Views/ListViewTests.cs @@ -545,5 +545,24 @@ Item 6", output); tem 3 tem 4", output); } + + [Fact] + public void SelectedItemChanged_Event_Is_Also_Fired_With_AllowsMarking_True_By_Keyboard_Or_Mouse () + { + var itemChanged = 0; + var lv = new ListView (new List () { "Item1", "Item2", "Item3" }) { Width = 5, Height = 3, AllowsMarking = true }; + lv.SelectedItemChanged += (e) => itemChanged = e.Item; + + Assert.Equal (0, lv.SelectedItem); + Assert.Equal (lv.SelectedItem, itemChanged); + + Assert.True (lv.ProcessKey (new KeyEvent (Key.CursorDown, new KeyModifiers()))); + Assert.Equal (1, lv.SelectedItem); + Assert.Equal (lv.SelectedItem, itemChanged); + + Assert.True (lv.MouseEvent (new MouseEvent(){ X = 0, Y = 2, Flags = MouseFlags.Button1Clicked})); + Assert.Equal (2, lv.SelectedItem); + Assert.Equal (lv.SelectedItem, itemChanged); + } } }