Skip to content

Commit 26c06d7

Browse files
authored
Merge pull request #3320 from BDisp/v1_mouseclick-fix_3318
Fixes #3318. v1-MouseClick should be invoked only once on a mouse click.
2 parents deb601e + 1724e71 commit 26c06d7

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

Terminal.Gui/Core/View.cs

+8-3
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 & MouseFlags.Button1Clicked) != 0 || (mouseEvent.Flags & MouseFlags.Button2Clicked) != 0
2898+
|| (mouseEvent.Flags & MouseFlags.Button3Clicked) != 0 || (mouseEvent.Flags & MouseFlags.Button4Clicked) != 0) {
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

+16
Original file line numberDiff line numberDiff line change
@@ -4581,5 +4581,21 @@ public void View_Instance_Use_Attribute_Normal_On_Draw ()
45814581
011110
45824582
000000", new Attribute [] { Colors.TopLevel.Normal, Colors.TopLevel.Focus });
45834583
}
4584+
4585+
[Theory]
4586+
[InlineData (MouseFlags.Button1Pressed, MouseFlags.Button1Released, MouseFlags.Button1Clicked)]
4587+
[InlineData (MouseFlags.Button1Pressed | MouseFlags.ButtonCtrl, MouseFlags.Button1Released | MouseFlags.ButtonCtrl, MouseFlags.Button1Clicked | MouseFlags.ButtonCtrl)]
4588+
public void OnMouseClick_Is_Only_Raised_Once (MouseFlags pressed, MouseFlags released, MouseFlags clicked)
4589+
{
4590+
var mouseClicks = 0;
4591+
var view = new View ();
4592+
view.MouseClick += (_) => mouseClicks++;
4593+
4594+
view.OnMouseEvent (new MouseEvent () { Flags = pressed });
4595+
view.OnMouseEvent (new MouseEvent () { Flags = released });
4596+
view.OnMouseEvent (new MouseEvent () { Flags = clicked });
4597+
4598+
Assert.Equal (1, mouseClicks);
4599+
}
45844600
}
45854601
}

0 commit comments

Comments
 (0)