diff --git a/zsnes/src/win/winlink.cpp b/zsnes/src/win/winlink.cpp index 0aa9fddd..95990a3d 100644 --- a/zsnes/src/win/winlink.cpp +++ b/zsnes/src/win/winlink.cpp @@ -119,6 +119,7 @@ float MouseMoveX; float MouseMoveY; int MouseMove2X; int MouseMove2Y; +BYTE MouseButtonPressed; DWORD SurfaceX=0; DWORD SurfaceY=0; @@ -2608,13 +2609,13 @@ int GetMouseX(void) if (TrapMouseCursor == 1) { - if (abs(MouseMoveX) > 10 && T36HZEnabled == 1 && FullScreen == 0 && Moving == 1) + if (abs(MouseMoveX) > 10 && T36HZEnabled == 1 && FullScreen == 0 && MouseButtonPressed == 0) { MouseInput->Unacquire(); SetCursorPos(X + WindowWidth + 32, Y + (MouseY * WindowHeight / 224)); } } - else if (FullScreen == 0 && snesmouse == 0 && Moving == 1) + else if (FullScreen == 0 && snesmouse == 0 && MouseButtonPressed == 0 || GUIOn2 == 1) { MouseInput->Unacquire(); SetCursorPos(X + WindowWidth + 1, Y + (MouseY * WindowHeight / 224)); @@ -2627,13 +2628,13 @@ int GetMouseX(void) if (TrapMouseCursor == 1) { - if (abs(MouseMoveX) > 10 && T36HZEnabled == 1 && FullScreen == 0 && Moving == 1) + if (abs(MouseMoveX) > 10 && T36HZEnabled == 1 && FullScreen == 0 && MouseButtonPressed == 0) { MouseInput->Unacquire(); SetCursorPos(X - 32, Y + (MouseY * WindowHeight / 224)); } } - else if (FullScreen == 0 && snesmouse == 0 && Moving == 1) + else if (FullScreen == 0 && snesmouse == 0 && MouseButtonPressed == 0 || GUIOn2 == 1) { MouseInput->Unacquire(); SetCursorPos(X - 1, Y + (MouseY * WindowHeight / 224)); @@ -2652,13 +2653,13 @@ int GetMouseY(void) if (TrapMouseCursor == 1) { - if (abs(MouseMoveY) > 10 && T36HZEnabled == 1 && FullScreen == 0 && Moving == 1) + if (abs(MouseMoveY) > 10 && T36HZEnabled == 1 && FullScreen == 0 && MouseButtonPressed == 0) { MouseInput->Unacquire(); SetCursorPos(X+(MouseX * WindowWidth / 256), Y + WindowHeight + 32); } } - else if (FullScreen == 0 && snesmouse == 0 && Moving == 1) + else if (FullScreen == 0 && snesmouse == 0 && MouseButtonPressed == 0 || GUIOn2 == 1) { MouseInput->Unacquire(); SetCursorPos(X+(MouseX * WindowWidth / 256), Y + WindowHeight + 1); @@ -2671,13 +2672,13 @@ int GetMouseY(void) if (TrapMouseCursor == 1) { - if (abs(MouseMoveY) > 10 && T36HZEnabled == 1 && FullScreen == 0 && Moving == 1) + if (abs(MouseMoveY) > 10 && T36HZEnabled == 1 && FullScreen == 0 && MouseButtonPressed == 0) { MouseInput->Unacquire(); SetCursorPos(X + (MouseX * WindowWidth / 256), Y - 32); } } - else if (FullScreen == 0 && snesmouse == 0 && Moving == 1) + else if (FullScreen == 0 && snesmouse == 0 && MouseButtonPressed == 0 || GUIOn2 == 1) { MouseInput->Unacquire(); SetCursorPos(X + (MouseX * WindowWidth / 256), Y - 1); @@ -2687,9 +2688,23 @@ int GetMouseY(void) return((int) MouseY); } +int GetMouseMoveX(void) +{ + MouseMove2X=MouseMoveX; + return(MouseMove2X); +} + +int GetMouseMoveY(void) +{ + MouseMove2Y=MouseMoveY; + return(MouseMove2Y); +} + int GetMouseButton(void) { RECT rc1; + if (MouseButton == 1) MouseButtonPressed = 1; + else MouseButtonPressed = 0; if (MouseButton&2) { while (MouseButton != 0 && T36HZEnabled && FullScreen == 0) @@ -2713,18 +2728,6 @@ int GetMouseButton(void) return((int) MouseButton); } -int GetMouseMoveX(void) -{ - MouseMove2X=MouseMoveX; - return(MouseMove2X); -} - -int GetMouseMoveY(void) -{ - MouseMove2Y=MouseMoveY; - return(MouseMove2Y); -} - void SetMouseMinX(int MinX) { MouseMinX = MinX;