Skip to content

Commit 157a323

Browse files
committed
Fixes #3317. Listvew mouse event doesn't cause a SelectedItemChanged event to fire
1 parent deb601e commit 157a323

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

Terminal.Gui/Views/ListView.cs

-2
Original file line numberDiff line numberDiff line change
@@ -802,8 +802,6 @@ public override bool MouseEvent (MouseEvent me)
802802
selected = top + me.Y;
803803
if (AllowsAll ()) {
804804
Source.SetMark (SelectedItem, !Source.IsMarked (SelectedItem));
805-
SetNeedsDisplay ();
806-
return true;
807805
}
808806
OnSelectedChanged ();
809807
SetNeedsDisplay ();

UnitTests/Views/ListViewTests.cs

+19
Original file line numberDiff line numberDiff line change
@@ -545,5 +545,24 @@ tem 2
545545
tem 3
546546
tem 4", output);
547547
}
548+
549+
[Fact]
550+
public void SelectedItemChanged_Event_Is_Also_Fired_With_AllowsMarking_True_By_Keyboard_Or_Mouse ()
551+
{
552+
var itemChanged = 0;
553+
var lv = new ListView (new List<string> () { "Item1", "Item2", "Item3" }) { Width = 5, Height = 3, AllowsMarking = true };
554+
lv.SelectedItemChanged += (e) => itemChanged = e.Item;
555+
556+
Assert.Equal (0, lv.SelectedItem);
557+
Assert.Equal (lv.SelectedItem, itemChanged);
558+
559+
Assert.True (lv.ProcessKey (new KeyEvent (Key.CursorDown, new KeyModifiers())));
560+
Assert.Equal (1, lv.SelectedItem);
561+
Assert.Equal (lv.SelectedItem, itemChanged);
562+
563+
Assert.True (lv.MouseEvent (new MouseEvent(){ X = 0, Y = 2, Flags = MouseFlags.Button1Clicked}));
564+
Assert.Equal (2, lv.SelectedItem);
565+
Assert.Equal (lv.SelectedItem, itemChanged);
566+
}
548567
}
549568
}

0 commit comments

Comments
 (0)