mirror of
https://github.com/SFML/SFML.git
synced 2024-11-28 22:31:09 +08:00
Android: Accept touch events from "multiple" devices
Attempt to fix issue #953, although I can't really say whether this is indeed some driver thing. All snippets I've found use exact comparison only (usually switches).
This commit is contained in:
parent
1b2c50a0d8
commit
4f3c26660e
@ -433,7 +433,7 @@ int WindowImplAndroid::processMotionEvent(AInputEvent* _event, ActivityStates* s
|
|||||||
|
|
||||||
if (device == AINPUT_SOURCE_MOUSE)
|
if (device == AINPUT_SOURCE_MOUSE)
|
||||||
event.type = Event::MouseMoved;
|
event.type = Event::MouseMoved;
|
||||||
else if (device == AINPUT_SOURCE_TOUCHSCREEN)
|
else if (device & AINPUT_SOURCE_TOUCHSCREEN)
|
||||||
event.type = Event::TouchMoved;
|
event.type = Event::TouchMoved;
|
||||||
|
|
||||||
int pointerCount = AMotionEvent_getPointerCount(_event);
|
int pointerCount = AMotionEvent_getPointerCount(_event);
|
||||||
@ -452,7 +452,7 @@ int WindowImplAndroid::processMotionEvent(AInputEvent* _event, ActivityStates* s
|
|||||||
|
|
||||||
states->mousePosition = Vector2i(event.mouseMove.x, event.mouseMove.y);
|
states->mousePosition = Vector2i(event.mouseMove.x, event.mouseMove.y);
|
||||||
}
|
}
|
||||||
else if (device == AINPUT_SOURCE_TOUCHSCREEN)
|
else if (device & AINPUT_SOURCE_TOUCHSCREEN)
|
||||||
{
|
{
|
||||||
if (states->touchEvents[id].x == x && states->touchEvents[id].y == y)
|
if (states->touchEvents[id].x == x && states->touchEvents[id].y == y)
|
||||||
continue;
|
continue;
|
||||||
@ -496,7 +496,7 @@ int WindowImplAndroid::processPointerEvent(bool isDown, AInputEvent* _event, Act
|
|||||||
if (id >= 0 && id < Mouse::ButtonCount)
|
if (id >= 0 && id < Mouse::ButtonCount)
|
||||||
states->isButtonPressed[id] = true;
|
states->isButtonPressed[id] = true;
|
||||||
}
|
}
|
||||||
else if (device == AINPUT_SOURCE_TOUCHSCREEN)
|
else if (device & AINPUT_SOURCE_TOUCHSCREEN)
|
||||||
{
|
{
|
||||||
event.type = Event::TouchBegan;
|
event.type = Event::TouchBegan;
|
||||||
event.touch.finger = id;
|
event.touch.finger = id;
|
||||||
@ -518,7 +518,7 @@ int WindowImplAndroid::processPointerEvent(bool isDown, AInputEvent* _event, Act
|
|||||||
if (id >= 0 && id < Mouse::ButtonCount)
|
if (id >= 0 && id < Mouse::ButtonCount)
|
||||||
states->isButtonPressed[id] = false;
|
states->isButtonPressed[id] = false;
|
||||||
}
|
}
|
||||||
else if (device == AINPUT_SOURCE_TOUCHSCREEN)
|
else if (device & AINPUT_SOURCE_TOUCHSCREEN)
|
||||||
{
|
{
|
||||||
event.type = Event::TouchEnded;
|
event.type = Event::TouchEnded;
|
||||||
event.touch.finger = id;
|
event.touch.finger = id;
|
||||||
|
Loading…
Reference in New Issue
Block a user