Changed: Only capture mouse for freeview or when button is held and mouse is moving
--HG-- branch : develop
This commit is contained in:
parent
eee4684b0c
commit
4e7d337297
2 changed files with 16 additions and 23 deletions
|
@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 ();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue