Fixed: #1174 Mac - Alpha Build - Mouse Behavior
This commit is contained in:
parent
dab1bec1aa
commit
3d3f1abb9c
2 changed files with 35 additions and 0 deletions
|
@ -246,6 +246,25 @@ bool CCocoaEventEmitter::processMessage(NSEvent* event, CEventServer* server)
|
||||||
mousePos.x /= (float)viewRect.size.width;
|
mousePos.x /= (float)viewRect.size.width;
|
||||||
mousePos.y /= (float)viewRect.size.height;
|
mousePos.y /= (float)viewRect.size.height;
|
||||||
|
|
||||||
|
// if the mouse event was placed outside the view, don't tell NeL :)
|
||||||
|
if((mousePos.x < 0.0 || mousePos.x > 1.0 ||
|
||||||
|
mousePos.y < 0.0 || mousePos.y > 1.0) &&
|
||||||
|
event.type != NSKeyDown && event.type != NSKeyUp)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// first event about mouse movement after setting to emulateRawMode
|
||||||
|
if(_setToEmulateRawMode &&
|
||||||
|
(event.type == NSMouseMoved ||
|
||||||
|
event.type == NSLeftMouseDragged ||
|
||||||
|
event.type == NSRightMouseDragged))
|
||||||
|
{
|
||||||
|
// do not report because it reflects wrapping pointer to 0.5/0.5
|
||||||
|
_setToEmulateRawMode = false;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// convert the modifiers for nel to pass them with the events
|
// convert the modifiers for nel to pass them with the events
|
||||||
NLMISC::TKeyButton modifiers =
|
NLMISC::TKeyButton modifiers =
|
||||||
modifierFlagsToNelKeyButton([event modifierFlags]);
|
modifierFlagsToNelKeyButton([event modifierFlags]);
|
||||||
|
@ -399,6 +418,12 @@ bool CCocoaEventEmitter::processMessage(NSEvent* event, CEventServer* server)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(_emulateRawMode && _driver && (event.type == NSMouseMoved ||
|
||||||
|
event.type == NSLeftMouseDragged || event.type == NSRightMouseDragged))
|
||||||
|
{
|
||||||
|
_driver->setMousePos(0.5, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -453,6 +478,14 @@ void CCocoaEventEmitter::submitEvents(CEventServer& server, bool /* allWins */)
|
||||||
void CCocoaEventEmitter::emulateMouseRawMode(bool enable)
|
void CCocoaEventEmitter::emulateMouseRawMode(bool enable)
|
||||||
{
|
{
|
||||||
_emulateRawMode = enable;
|
_emulateRawMode = enable;
|
||||||
|
|
||||||
|
if(_emulateRawMode)
|
||||||
|
{
|
||||||
|
_setToEmulateRawMode = true;
|
||||||
|
|
||||||
|
if(_driver)
|
||||||
|
_driver->setMousePos(0.5, 0.5);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,7 @@ namespace NLMISC
|
||||||
class CCocoaEventEmitter : public IEventEmitter
|
class CCocoaEventEmitter : public IEventEmitter
|
||||||
{
|
{
|
||||||
bool _emulateRawMode;
|
bool _emulateRawMode;
|
||||||
|
bool _setToEmulateRawMode;
|
||||||
NL3D::IDriver* _driver;
|
NL3D::IDriver* _driver;
|
||||||
CocoaOpenGLView* _glView;
|
CocoaOpenGLView* _glView;
|
||||||
|
|
||||||
|
@ -42,6 +43,7 @@ class CCocoaEventEmitter : public IEventEmitter
|
||||||
public:
|
public:
|
||||||
CCocoaEventEmitter() :
|
CCocoaEventEmitter() :
|
||||||
_emulateRawMode(false),
|
_emulateRawMode(false),
|
||||||
|
_setToEmulateRawMode(false),
|
||||||
_driver(NULL),
|
_driver(NULL),
|
||||||
_glView(nil),
|
_glView(nil),
|
||||||
_server(NULL) { }
|
_server(NULL) { }
|
||||||
|
|
Loading…
Reference in a new issue