Changed: Only capture mouse for freeview or when button is held and mouse is moving

--HG--
branch : develop
This commit is contained in:
Nimetu 2019-03-20 12:25:15 +02:00
parent eee4684b0c
commit 4e7d337297
2 changed files with 16 additions and 23 deletions

View file

@ -84,9 +84,6 @@ bool InitMouseWithCursor (bool hardware)
MouseHardware = hardware; MouseHardware = hardware;
CViewPointer::setHWMouse( hardware ); CViewPointer::setHWMouse( hardware );
// Update mouse information
UpdateMouse ();
if (InitMouseFirstTime) if (InitMouseFirstTime)
{ {
InitMouseFirstTime = false; InitMouseFirstTime = false;
@ -129,16 +126,6 @@ bool IsMouseCursorHardware ()
return MouseHardware; return MouseHardware;
} }
// *********************************************************************************
// Set the mouse mode. Call this method once per frame to update window size
void UpdateMouse ()
{
if (!Driver->isSystemCursorCaptured())
{
DownMouseButtons = 0;
}
}
// ********************************************************************************* // *********************************************************************************
// Use this method to toggle the mouse (freelook <- cursor) // Use this method to toggle the mouse (freelook <- cursor)
void SetMouseFreeLook () void SetMouseFreeLook ()
@ -160,7 +147,6 @@ void SetMouseFreeLook ()
pointer->show (false); pointer->show (false);
} }
} }
UpdateMouse ();
} }
} }
@ -202,7 +188,6 @@ void SetMouseCursor (bool updatePos)
} }
MouseFreeLook = false; MouseFreeLook = false;
UpdateMouse ();
// Integer coordinates // Integer coordinates
sint ix = (sint)(x*(float)width+0.5f); sint ix = (sint)(x*(float)width+0.5f);
@ -253,7 +238,6 @@ void SetMouseCursor (bool updatePos)
void SetMouseSpeed (float speed) void SetMouseSpeed (float speed)
{ {
MouseCursorSpeed = speed; MouseCursorSpeed = speed;
UpdateMouse ();
} }
// ********************************************************************************* // *********************************************************************************
@ -261,12 +245,27 @@ void SetMouseSpeed (float speed)
void SetMouseAcceleration (uint accel) void SetMouseAcceleration (uint accel)
{ {
MouseCursorAcceleration = accel; MouseCursorAcceleration = accel;
UpdateMouse ();
} }
// ********************************************************************************* // *********************************************************************************
void HandleSystemCursorCapture(const CEvent &event) void HandleSystemCursorCapture(const CEvent &event)
{ {
static bool mouseCaptured = false;
// capture on first move event after button is held down or free look is activated
if (event == EventMouseMoveId && !mouseCaptured && (MouseFreeLook || DownMouseButtons != 0))
{
mouseCaptured = true;
Driver->setCapture(true);
}
// release when button is released and not in free look
if (mouseCaptured && !MouseFreeLook && DownMouseButtons == 0)
{
mouseCaptured = false;
Driver->setCapture(false);
}
if (event == EventMouseDownId) if (event == EventMouseDownId)
{ {
CEventMouseDown &em = (CEventMouseDown &) event; CEventMouseDown &em = (CEventMouseDown &) event;
@ -279,8 +278,6 @@ void HandleSystemCursorCapture(const CEvent &event)
cursor->setPointerMiddleDown(em.Button == middleButton); cursor->setPointerMiddleDown(em.Button == middleButton);
cursor->setPointerRightDown(em.Button == rightButton); cursor->setPointerRightDown(em.Button == rightButton);
} }
Driver->setCapture(true);
} }
if (event == EventMouseUpId) if (event == EventMouseUpId)
@ -297,7 +294,6 @@ void HandleSystemCursorCapture(const CEvent &event)
cursor->setPointerMiddleDown(false); cursor->setPointerMiddleDown(false);
cursor->setPointerRightDown(false); cursor->setPointerRightDown(false);
} }
Driver->setCapture(false);
} }
} }

View file

@ -44,9 +44,6 @@ bool InitMouseWithCursor (bool hardware);
// Is mouse cursor hardware ? // Is mouse cursor hardware ?
bool IsMouseCursorHardware (); bool IsMouseCursorHardware ();
// Set the mouse mode. Call this method once per frame to update window size
void UpdateMouse ();
// Use this method to toggle the mouse (freelook <- cursor) // Use this method to toggle the mouse (freelook <- cursor)
void SetMouseFreeLook (); void SetMouseFreeLook ();