mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-26 15:57:56 +01:00
* Initial plan * Add comprehensive MouseClick removal analysis Co-authored-by: tig <585482+tig@users.noreply.github.com> * Fix code review feedback on analysis document Co-authored-by: tig <585482+tig@users.noreply.github.com> * Add actual line numbers to analysis document Co-authored-by: tig <585482+tig@users.noreply.github.com> * Final polish on analysis document - clarify TextView Co-authored-by: tig <585482+tig@users.noreply.github.com> * Phase 3: Port 6 simple Views from MouseClick to Selecting/MouseBindings Co-authored-by: tig <585482+tig@users.noreply.github.com> * Phase 2: Port 10 Scenarios from MouseClick to Selecting/remove Co-authored-by: tig <585482+tig@users.noreply.github.com> * Update analysis document - Phases 2 & 3 complete Co-authored-by: tig <585482+tig@users.noreply.github.com> * Fix failing tests - Button multi-button support and Label focus handling Co-authored-by: tig <585482+tig@users.noreply.github.com> * Phase 4: Port ScrollBar from OnMouseClick to OnSelecting; remove analysis doc Co-authored-by: tig <585482+tig@users.noreply.github.com> * Phase 5: Update/remove tests that explicitly test MouseClick API Co-authored-by: tig <585482+tig@users.noreply.github.com> * Code cleanup * Remove MouseClick event Consolidated mouse event handling by removing the `MouseClick` event and integrating its functionality into the `MouseEvent` event. Simplified `MouseEventArgs` documentation and added support for invoking commands bound to mouse events. Reorganized code by removing `Mouse Pressed Events` and `Mouse Click Events` regions, introducing a new `WhenGrabbed Handlers` region. Updated tests to replace `MouseClick` with `MouseEvent`, adjusted test logic, and improved variable naming for clarity. Removed redundant assertions and unused code related to `MouseClick`. Improved event propagation logic to ensure proper handling of unhandled events. Performed general code cleanup to enhance readability and maintainability. * Updated deep dives. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: tig <585482+tig@users.noreply.github.com> Co-authored-by: Tig <tig@users.noreply.github.com>
This commit is contained in:
@@ -25,7 +25,7 @@ public class MouseTests : TestsAllViews
|
||||
[AutoInitShutdown]
|
||||
public void ButtonPressed_In_Border_Starts_Drag (int marginThickness, int borderThickness, int paddingThickness, int xy, bool expectedMoved)
|
||||
{
|
||||
var testView = new View
|
||||
View testView = new ()
|
||||
{
|
||||
CanFocus = true,
|
||||
X = 4,
|
||||
@@ -38,7 +38,7 @@ public class MouseTests : TestsAllViews
|
||||
testView.Border!.Thickness = new (borderThickness);
|
||||
testView.Padding!.Thickness = new (paddingThickness);
|
||||
|
||||
var top = new Runnable ();
|
||||
Runnable top = new ();
|
||||
top.Add (testView);
|
||||
|
||||
SessionToken rs = Application.Begin (top);
|
||||
@@ -61,9 +61,9 @@ public class MouseTests : TestsAllViews
|
||||
[InlineData (MouseFlags.Button4Pressed, MouseFlags.Button4Released, MouseFlags.Button4Clicked)]
|
||||
public void WantContinuousButtonPressed_False_Button_Press_Release_DoesNotClick (MouseFlags pressed, MouseFlags released, MouseFlags clicked)
|
||||
{
|
||||
var me = new MouseEventArgs ();
|
||||
MouseEventArgs me = new ();
|
||||
|
||||
var view = new View
|
||||
View view = new ()
|
||||
{
|
||||
Width = 1,
|
||||
Height = 1,
|
||||
@@ -72,7 +72,7 @@ public class MouseTests : TestsAllViews
|
||||
|
||||
var clickedCount = 0;
|
||||
|
||||
view.MouseClick += (s, e) => clickedCount++;
|
||||
view.MouseEvent += (s, e) => clickedCount += e.IsSingleDoubleOrTripleClicked ? 1 : 0;
|
||||
|
||||
me.Flags = pressed;
|
||||
view.NewMouseEvent (me);
|
||||
@@ -99,36 +99,6 @@ public class MouseTests : TestsAllViews
|
||||
Application.ResetState (true);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData (MouseFlags.Button1Clicked)]
|
||||
[InlineData (MouseFlags.Button2Clicked)]
|
||||
[InlineData (MouseFlags.Button3Clicked)]
|
||||
[InlineData (MouseFlags.Button4Clicked)]
|
||||
public void WantContinuousButtonPressed_True_Button_Clicked_Raises_MouseClick (MouseFlags clicked)
|
||||
{
|
||||
var me = new MouseEventArgs ();
|
||||
|
||||
var view = new View
|
||||
{
|
||||
Width = 1,
|
||||
Height = 1,
|
||||
WantContinuousButtonPressed = true
|
||||
};
|
||||
|
||||
var clickedCount = 0;
|
||||
|
||||
view.MouseClick += (s, e) => clickedCount++;
|
||||
|
||||
me.Flags = clicked;
|
||||
view.NewMouseEvent (me);
|
||||
Assert.Equal (1, clickedCount);
|
||||
|
||||
view.Dispose ();
|
||||
|
||||
// Button1Pressed, Button1Released cause Application.Mouse.MouseGrabView to be set
|
||||
Application.ResetState (true);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData (MouseFlags.Button1Clicked)]
|
||||
[InlineData (MouseFlags.Button2Clicked)]
|
||||
@@ -136,9 +106,9 @@ public class MouseTests : TestsAllViews
|
||||
[InlineData (MouseFlags.Button4Clicked)]
|
||||
public void WantContinuousButtonPressed_True_Button_Clicked_Raises_Selecting (MouseFlags clicked)
|
||||
{
|
||||
var me = new MouseEventArgs ();
|
||||
MouseEventArgs me = new ();
|
||||
|
||||
var view = new View
|
||||
View view = new ()
|
||||
{
|
||||
Width = 1,
|
||||
Height = 1,
|
||||
@@ -166,9 +136,9 @@ public class MouseTests : TestsAllViews
|
||||
[InlineData (MouseFlags.Button4Pressed, MouseFlags.Button4Released)]
|
||||
public void WantContinuousButtonPressed_True_And_WantMousePositionReports_True_Button_Press_Release_Clicks (MouseFlags pressed, MouseFlags released)
|
||||
{
|
||||
var me = new MouseEventArgs ();
|
||||
MouseEventArgs me = new ();
|
||||
|
||||
var view = new View
|
||||
View view = new ()
|
||||
{
|
||||
Width = 1,
|
||||
Height = 1,
|
||||
@@ -177,8 +147,8 @@ public class MouseTests : TestsAllViews
|
||||
};
|
||||
|
||||
// Setup components for mouse held down
|
||||
var timed = new TimedEvents ();
|
||||
var grab = new MouseGrabHandler ();
|
||||
TimedEvents timed = new ();
|
||||
MouseGrabHandler grab = new ();
|
||||
view.MouseHeldDown = new MouseHeldDown (view, timed, grab);
|
||||
|
||||
// Register callback for what to do when the mouse is held down
|
||||
@@ -226,9 +196,9 @@ public class MouseTests : TestsAllViews
|
||||
MouseFlags clicked
|
||||
)
|
||||
{
|
||||
var me = new MouseEventArgs ();
|
||||
MouseEventArgs me = new ();
|
||||
|
||||
var view = new View
|
||||
View view = new ()
|
||||
{
|
||||
Width = 1,
|
||||
Height = 1,
|
||||
@@ -237,8 +207,8 @@ public class MouseTests : TestsAllViews
|
||||
};
|
||||
|
||||
// Setup components for mouse held down
|
||||
var timed = new TimedEvents ();
|
||||
var grab = new MouseGrabHandler ();
|
||||
TimedEvents timed = new ();
|
||||
MouseGrabHandler grab = new ();
|
||||
view.MouseHeldDown = new MouseHeldDown (view, timed, grab);
|
||||
|
||||
// Register callback for what to do when the mouse is held down
|
||||
@@ -279,9 +249,9 @@ public class MouseTests : TestsAllViews
|
||||
[Fact]
|
||||
public void WantContinuousButtonPressed_True_And_WantMousePositionReports_True_Move_InViewport_OutOfViewport_Keeps_Counting ()
|
||||
{
|
||||
var me = new MouseEventArgs ();
|
||||
MouseEventArgs me = new ();
|
||||
|
||||
var view = new View
|
||||
View view = new ()
|
||||
{
|
||||
Width = 1,
|
||||
Height = 1,
|
||||
@@ -290,8 +260,8 @@ public class MouseTests : TestsAllViews
|
||||
};
|
||||
|
||||
// Setup components for mouse held down
|
||||
var timed = new TimedEvents ();
|
||||
var grab = new MouseGrabHandler ();
|
||||
TimedEvents timed = new ();
|
||||
MouseGrabHandler grab = new ();
|
||||
view.MouseHeldDown = new MouseHeldDown (view, timed, grab);
|
||||
|
||||
// Register callback for what to do when the mouse is held down
|
||||
@@ -352,7 +322,7 @@ public class MouseTests : TestsAllViews
|
||||
//[InlineData (true, MouseState.PressedOutside, 0, 0, 0, 1)]
|
||||
//public void MouseState_Button1_Pressed_Then_Released_Outside (bool inViewport, MouseState highlightFlags, int noneCount, int expectedInCount, int expectedPressedCount, int expectedPressedOutsideCount)
|
||||
//{
|
||||
// var testView = new MouseEventTestView
|
||||
// MouseEventTestView testView = new ()
|
||||
// {
|
||||
// HighlightStates = highlightFlags
|
||||
// };
|
||||
@@ -389,7 +359,7 @@ public class MouseTests : TestsAllViews
|
||||
[InlineData (10)]
|
||||
public void MouseState_None_Button1_Pressed_Move_No_Changes (int x)
|
||||
{
|
||||
var testView = new MouseEventTestView
|
||||
MouseEventTestView testView = new ()
|
||||
{
|
||||
HighlightStates = MouseState.None
|
||||
};
|
||||
@@ -403,7 +373,7 @@ public class MouseTests : TestsAllViews
|
||||
Assert.Equal (0, testView.MouseStatePressedOutsideCount);
|
||||
Assert.Equal (0, testView.MouseStateNoneCount);
|
||||
|
||||
// Move to x,0
|
||||
// Move to x,0
|
||||
testView.NewMouseEvent (new () { Flags = MouseFlags.Button1Pressed, Position = new (x, 0) });
|
||||
|
||||
if (inViewport)
|
||||
@@ -421,7 +391,7 @@ public class MouseTests : TestsAllViews
|
||||
Assert.Equal (0, testView.MouseStateNoneCount);
|
||||
}
|
||||
|
||||
// Move backto 0,0 ; in viewport
|
||||
// Move back to 0,0 ; in viewport
|
||||
testView.NewMouseEvent (new () { Flags = MouseFlags.Button1Pressed });
|
||||
|
||||
if (inViewport)
|
||||
@@ -451,7 +421,7 @@ public class MouseTests : TestsAllViews
|
||||
[InlineData (10)]
|
||||
public void MouseState_Pressed_Button1_Pressed_Move_Keeps_Pressed (int x)
|
||||
{
|
||||
var testView = new MouseEventTestView
|
||||
MouseEventTestView testView = new ()
|
||||
{
|
||||
HighlightStates = MouseState.Pressed
|
||||
};
|
||||
@@ -513,7 +483,7 @@ public class MouseTests : TestsAllViews
|
||||
[InlineData (10)]
|
||||
public void MouseState_PressedOutside_Button1_Pressed_Move_Raises_PressedOutside (int x)
|
||||
{
|
||||
var testView = new MouseEventTestView
|
||||
MouseEventTestView testView = new ()
|
||||
{
|
||||
HighlightStates = MouseState.PressedOutside,
|
||||
WantContinuousButtonPressed = false
|
||||
@@ -576,7 +546,7 @@ public class MouseTests : TestsAllViews
|
||||
[InlineData (10)]
|
||||
public void MouseState_PressedOutside_Button1_Pressed_Move_Raises_PressedOutside_WantContinuousButtonPressed (int x)
|
||||
{
|
||||
var testView = new MouseEventTestView
|
||||
MouseEventTestView testView = new ()
|
||||
{
|
||||
HighlightStates = MouseState.PressedOutside,
|
||||
WantContinuousButtonPressed = true
|
||||
|
||||
Reference in New Issue
Block a user