mirror of https://github.com/encounter/SDL.git
Clean up captured pointer code to avoid logcat clutter on pre-8.0 systems (thanks Rachel!)
This commit is contained in:
parent
df0d3f1364
commit
fd8e8f9f20
|
@ -1382,10 +1382,6 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
|
||||||
setOnGenericMotionListener(SDLActivity.getMotionListener());
|
setOnGenericMotionListener(SDLActivity.getMotionListener());
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((Build.VERSION.SDK_INT >= 26) && !SDLActivity.isDeXMode()) {
|
|
||||||
setOnCapturedPointerListener(new SDLCapturedPointerListener_API26());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Some arbitrary defaults to avoid a potential division by zero
|
// Some arbitrary defaults to avoid a potential division by zero
|
||||||
mWidth = 1.0f;
|
mWidth = 1.0f;
|
||||||
mHeight = 1.0f;
|
mHeight = 1.0f;
|
||||||
|
@ -1740,6 +1736,49 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
|
||||||
event.values[2] / SensorManager.GRAVITY_EARTH);
|
event.values[2] / SensorManager.GRAVITY_EARTH);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Captured pointer events for API 26.
|
||||||
|
public boolean onCapturedPointerEvent(MotionEvent event)
|
||||||
|
{
|
||||||
|
int action = event.getActionMasked();
|
||||||
|
|
||||||
|
float x, y;
|
||||||
|
switch (action) {
|
||||||
|
case MotionEvent.ACTION_SCROLL:
|
||||||
|
x = event.getAxisValue(MotionEvent.AXIS_HSCROLL, 0);
|
||||||
|
y = event.getAxisValue(MotionEvent.AXIS_VSCROLL, 0);
|
||||||
|
SDLActivity.onNativeMouse(0, action, x, y, false);
|
||||||
|
return true;
|
||||||
|
|
||||||
|
case MotionEvent.ACTION_HOVER_MOVE:
|
||||||
|
case MotionEvent.ACTION_MOVE:
|
||||||
|
x = event.getX(0);
|
||||||
|
y = event.getY(0);
|
||||||
|
SDLActivity.onNativeMouse(0, action, x, y, true);
|
||||||
|
return true;
|
||||||
|
|
||||||
|
case MotionEvent.ACTION_BUTTON_PRESS:
|
||||||
|
case MotionEvent.ACTION_BUTTON_RELEASE:
|
||||||
|
|
||||||
|
// Change our action value to what SDL's code expects.
|
||||||
|
if (action == MotionEvent.ACTION_BUTTON_PRESS) {
|
||||||
|
action = MotionEvent.ACTION_DOWN;
|
||||||
|
}
|
||||||
|
else if (action == MotionEvent.ACTION_BUTTON_RELEASE) {
|
||||||
|
action = MotionEvent.ACTION_UP;
|
||||||
|
}
|
||||||
|
|
||||||
|
x = event.getX(0);
|
||||||
|
y = event.getY(0);
|
||||||
|
int button = event.getButtonState();
|
||||||
|
|
||||||
|
SDLActivity.onNativeMouse(button, action, x, y, true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is a fake invisible editor view that receives the input and defines the
|
/* This is a fake invisible editor view that receives the input and defines the
|
||||||
|
|
|
@ -749,7 +749,7 @@ class SDLGenericMotionListener_API26 extends SDLGenericMotionListener_API24 {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean supportsRelativeMouse() {
|
public boolean supportsRelativeMouse() {
|
||||||
return true;
|
return !SDLActivity.isDeXMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -759,20 +759,26 @@ class SDLGenericMotionListener_API26 extends SDLGenericMotionListener_API24 {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setRelativeMouseEnabled(boolean enabled) {
|
public boolean setRelativeMouseEnabled(boolean enabled) {
|
||||||
if (enabled) {
|
if (!SDLActivity.isDeXMode()) {
|
||||||
SDLActivity.getContentView().requestPointerCapture();
|
if (enabled) {
|
||||||
|
SDLActivity.getContentView().requestPointerCapture();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
SDLActivity.getContentView().releasePointerCapture();
|
||||||
|
}
|
||||||
|
mRelativeModeEnabled = enabled;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
SDLActivity.getContentView().releasePointerCapture();
|
{
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
mRelativeModeEnabled = enabled;
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void reclaimRelativeMouseModeIfNeeded()
|
public void reclaimRelativeMouseModeIfNeeded()
|
||||||
{
|
{
|
||||||
if (mRelativeModeEnabled) {
|
if (mRelativeModeEnabled && !SDLActivity.isDeXMode()) {
|
||||||
SDLActivity.getContentView().requestPointerCapture();
|
SDLActivity.getContentView().requestPointerCapture();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -788,51 +794,4 @@ class SDLGenericMotionListener_API26 extends SDLGenericMotionListener_API24 {
|
||||||
// Relative mouse in capture mode will only have relative for X/Y
|
// Relative mouse in capture mode will only have relative for X/Y
|
||||||
return event.getY(0);
|
return event.getY(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class SDLCapturedPointerListener_API26 implements View.OnCapturedPointerListener
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public boolean onCapturedPointer(View view, MotionEvent event)
|
|
||||||
{
|
|
||||||
int action = event.getActionMasked();
|
|
||||||
|
|
||||||
float x, y;
|
|
||||||
switch (action) {
|
|
||||||
case MotionEvent.ACTION_SCROLL:
|
|
||||||
x = event.getAxisValue(MotionEvent.AXIS_HSCROLL, 0);
|
|
||||||
y = event.getAxisValue(MotionEvent.AXIS_VSCROLL, 0);
|
|
||||||
SDLActivity.onNativeMouse(0, action, x, y, false);
|
|
||||||
return true;
|
|
||||||
|
|
||||||
case MotionEvent.ACTION_HOVER_MOVE:
|
|
||||||
case MotionEvent.ACTION_MOVE:
|
|
||||||
x = event.getX(0);
|
|
||||||
y = event.getY(0);
|
|
||||||
SDLActivity.onNativeMouse(0, action, x, y, true);
|
|
||||||
return true;
|
|
||||||
|
|
||||||
case MotionEvent.ACTION_BUTTON_PRESS:
|
|
||||||
case MotionEvent.ACTION_BUTTON_RELEASE:
|
|
||||||
|
|
||||||
// Change our action value to what SDL's code expects.
|
|
||||||
if (action == MotionEvent.ACTION_BUTTON_PRESS) {
|
|
||||||
action = MotionEvent.ACTION_DOWN;
|
|
||||||
}
|
|
||||||
else if (action == MotionEvent.ACTION_BUTTON_RELEASE) {
|
|
||||||
action = MotionEvent.ACTION_UP;
|
|
||||||
}
|
|
||||||
|
|
||||||
x = event.getX(0);
|
|
||||||
y = event.getY(0);
|
|
||||||
int button = event.getButtonState();
|
|
||||||
|
|
||||||
SDLActivity.onNativeMouse(button, action, x, y, true);
|
|
||||||
return true;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue