Skip to content

Commit 37e76d1

Browse files
committed
Fixes #3318. v1-MouseClick should be invoked only once on a mouse click.
1 parent deb601e commit 37e76d1

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

Terminal.Gui/Core/View.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2894,9 +2894,14 @@ public virtual bool OnMouseEvent (MouseEvent mouseEvent)
28942894
return false;
28952895
}
28962896

2897-
var args = new MouseEventArgs (mouseEvent);
2898-
if (OnMouseClick (args))
2899-
return true;
2897+
if (mouseEvent.Flags.HasFlag (MouseFlags.Button1Clicked) || mouseEvent.Flags.HasFlag (MouseFlags.Button2Clicked)
2898+
|| mouseEvent.Flags.HasFlag (MouseFlags.Button3Clicked) || mouseEvent.Flags.HasFlag (MouseFlags.Button4Clicked)) {
2899+
2900+
var args = new MouseEventArgs (mouseEvent);
2901+
if (OnMouseClick (args)) {
2902+
return true;
2903+
}
2904+
}
29002905
if (MouseEvent (mouseEvent))
29012906
return true;
29022907

UnitTests/Views/ViewTests.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4581,5 +4581,19 @@ public void View_Instance_Use_Attribute_Normal_On_Draw ()
45814581
011110
45824582
000000", new Attribute [] { Colors.TopLevel.Normal, Colors.TopLevel.Focus });
45834583
}
4584+
4585+
[Fact]
4586+
public void OnMouseClick_Is_Only_Fired_Once ()
4587+
{
4588+
var mouseClicks = 0;
4589+
var view = new View ();
4590+
view.MouseClick += (_) => mouseClicks++;
4591+
4592+
view.OnMouseEvent (new MouseEvent () { Flags = MouseFlags.Button1Pressed });
4593+
view.OnMouseEvent (new MouseEvent () { Flags = MouseFlags.Button1Released });
4594+
view.OnMouseEvent (new MouseEvent () { Flags = MouseFlags.Button1Clicked });
4595+
4596+
Assert.Equal (1, mouseClicks);
4597+
}
45844598
}
45854599
}

0 commit comments

Comments
 (0)