Skip to content

Commit 214ff12

Browse files
authored
Merge pull request #3321 from BDisp/v1_listview-selecteditemchanged-marks-click.fix_3317
Fixes #3317. v1-Listvew mouse event doesn't cause a SelectedItemChanged event to fire
2 parents 26c06d7 + b1218d7 commit 214ff12

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

Terminal.Gui/Views/ListView.cs

+1-3
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 ();
@@ -877,7 +875,7 @@ void RenderUstr (ConsoleDriver driver, ustring ustr, int col, int line, int widt
877875
/// <inheritdoc/>
878876
public void Render (ListView container, ConsoleDriver driver, bool marked, int item, int col, int line, int width, int start = 0)
879877
{
880-
var savedClip = container.ClipToBounds();
878+
var savedClip = container.ClipToBounds ();
881879
container.Move (col - start, line);
882880
var t = src? [item];
883881
if (t == null) {

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_Raised_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)