From 15acee29f19c845dc534d2c8af48a449ea1cd380 Mon Sep 17 00:00:00 2001 From: lubomyr Date: Mon, 30 Jan 2017 22:35:40 +0200 Subject: ANDROIDSDL: implemented checkbox for change mouse mode in Options menu --- backends/platform/androidsdl/androidsdl-sdl.cpp | 33 +++++++++++++++++++++++++ backends/platform/androidsdl/androidsdl-sdl.h | 4 +++ 2 files changed, 37 insertions(+) (limited to 'backends/platform') diff --git a/backends/platform/androidsdl/androidsdl-sdl.cpp b/backends/platform/androidsdl/androidsdl-sdl.cpp index d04512475a..ab0c0524f1 100644 --- a/backends/platform/androidsdl/androidsdl-sdl.cpp +++ b/backends/platform/androidsdl/androidsdl-sdl.cpp @@ -27,6 +27,7 @@ #include "backends/platform/androidsdl/androidsdl-sdl.h" #include "backends/events/androidsdl/androidsdl-events.h" #include "backends/graphics/androidsdl/androidsdl-graphics.h" +#include void OSystem_ANDROIDSDL::initBackend() { // Create the backend custom managers @@ -42,7 +43,39 @@ void OSystem_ANDROIDSDL::initBackend() { if (!ConfMan.hasKey("gfx_mode")) ConfMan.set("gfx_mode", "2x"); + + if (!ConfMan.hasKey("touchpad_mouse_mode")) { + const bool enable = (SDL_ANDROID_GetMouseEmulationMode() == 0) ? false : true; + ConfMan.setBool("touchpad_mouse_mode", enable); + } else { + touchpadMode(ConfMan.getBool("touchpad_mouse_mode")); + } // Call parent implementation of this method OSystem_POSIX::initBackend(); } + +void OSystem_ANDROIDSDL::touchpadMode(bool enable) { + if (enable) + switchToRelativeMouseMode(); + else + switchToDirectMouseMode(); +} + +void OSystem_ANDROIDSDL::switchToDirectMouseMode() { + SDL_ANDROID_SetMouseEmulationMode(0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1); +} + +void OSystem_ANDROIDSDL::switchToRelativeMouseMode() { + SDL_ANDROID_SetMouseEmulationMode(1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1); +} + +void OSystem_ANDROIDSDL::setFeatureState(Feature f, bool enable) { + switch (f) { + case kFeatureTouchpadMode: + touchpadMode(enable); + break; + } + + OSystem_POSIX::setFeatureState(f, enable); +} diff --git a/backends/platform/androidsdl/androidsdl-sdl.h b/backends/platform/androidsdl/androidsdl-sdl.h index 6ebe5022eb..72d2a50093 100644 --- a/backends/platform/androidsdl/androidsdl-sdl.h +++ b/backends/platform/androidsdl/androidsdl-sdl.h @@ -28,6 +28,10 @@ class OSystem_ANDROIDSDL : public OSystem_POSIX { public: virtual void initBackend(); + virtual void setFeatureState(Feature f, bool enable); + void touchpadMode(bool enable); + void switchToDirectMouseMode(); + void switchToRelativeMouseMode(); #ifdef ENABLE_KEYMAPPER // FIXME: This just calls parent methods, is it needed? -- cgit v1.2.3