Skip to content

Commit b8810f9

Browse files
committed
Fixing issue where right click was recognized even if left one was pressed
1 parent 16a0e45 commit b8810f9

File tree

2 files changed

+38
-3
lines changed

2 files changed

+38
-3
lines changed

RobotRuntime/Commands/CommandRelease.cs

+10-3
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,16 @@ public override void Run(TestData TestData)
3535
{
3636
if (!DontMove)
3737
WinAPI.MouseMoveTo(X, Y);
38-
WinAPI.PerformActionUp(MouseButton.Left);
39-
WinAPI.PerformActionUp(MouseButton.Right);
40-
WinAPI.PerformActionUp(MouseButton.Middle);
38+
39+
if (WinAPI.CurrentMouseState.HasFlag(WinAPI.MouseEventFlags.LeftDown))
40+
WinAPI.PerformActionUp(MouseButton.Left);
41+
42+
if (WinAPI.CurrentMouseState.HasFlag(WinAPI.MouseEventFlags.RightDown))
43+
WinAPI.PerformActionUp(MouseButton.Right);
44+
45+
if (WinAPI.CurrentMouseState.HasFlag(WinAPI.MouseEventFlags.MiddleDown))
46+
WinAPI.PerformActionUp(MouseButton.Middle);
47+
4148
}
4249

4350
public override string ToString()

RobotRuntime/Utils/WinAPI.cs

+28
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ public static class WinAPI
1212

1313
public const int TimeBetweenActions = 5;
1414

15+
public static MouseEventFlags CurrentMouseState = MouseEventFlags.LeftUp | MouseEventFlags.MiddleUp | MouseEventFlags.RightUp;
16+
1517
[Flags]
1618
public enum MouseEventFlags
1719
{
@@ -59,10 +61,36 @@ public static void PerformAction(MouseEventFlags value)
5961
Point position = GetCursorPosition();
6062
MouseMoveTo(position.X, position.Y);
6163

64+
UpdateCurrentMouseState(value);
6265
mouse_event((int)value, position.X, position.Y, 0, 0);
6366
Thread.Sleep(TimeBetweenActions);
6467
}
6568

69+
private static void UpdateCurrentMouseState(MouseEventFlags flag)
70+
{
71+
switch (flag)
72+
{
73+
case MouseEventFlags.LeftDown:
74+
CurrentMouseState = (CurrentMouseState | MouseEventFlags.LeftDown) & ~MouseEventFlags.LeftUp;
75+
break;
76+
case MouseEventFlags.LeftUp:
77+
CurrentMouseState = (CurrentMouseState | MouseEventFlags.LeftUp) & ~MouseEventFlags.LeftDown;
78+
break;
79+
case MouseEventFlags.MiddleDown:
80+
CurrentMouseState = (CurrentMouseState | MouseEventFlags.MiddleDown) & ~MouseEventFlags.MiddleUp;
81+
break;
82+
case MouseEventFlags.MiddleUp:
83+
CurrentMouseState = (CurrentMouseState | MouseEventFlags.MiddleUp) & ~MouseEventFlags.MiddleDown;
84+
break;
85+
case MouseEventFlags.RightDown:
86+
CurrentMouseState = (CurrentMouseState | MouseEventFlags.RightDown) & ~MouseEventFlags.RightUp;
87+
break;
88+
case MouseEventFlags.RightUp:
89+
CurrentMouseState = (CurrentMouseState | MouseEventFlags.RightUp) & ~MouseEventFlags.RightDown;
90+
break;
91+
}
92+
}
93+
6694
public static void PerformActionDown(MouseButton value)
6795
{
6896
var flags = value == MouseButton.Left ? MouseEventFlags.LeftDown :

0 commit comments

Comments
 (0)