[Scummvm-git-logs] scummvm master -> 27e8467b2887b2623614bfd304b1643756ff7c0d

antoniou79 a.antoniou79 at gmail.com
Tue Apr 7 10:55:34 UTC 2020


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
27e8467b28 ANDROID: Add support for additional mouse buttons


Commit: 27e8467b2887b2623614bfd304b1643756ff7c0d
    https://github.com/scummvm/scummvm/commit/27e8467b2887b2623614bfd304b1643756ff7c0d
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2020-04-07T13:55:30+03:00

Commit Message:
ANDROID: Add support for additional mouse buttons

Changed paths:
    backends/platform/android/events.cpp
    backends/platform/android/events.h
    backends/platform/android/org/scummvm/scummvm/MouseHelper.java
    backends/platform/android/org/scummvm/scummvm/ScummVMEvents.java


diff --git a/backends/platform/android/events.cpp b/backends/platform/android/events.cpp
index 952f9e788e..3a28c25715 100644
--- a/backends/platform/android/events.cpp
+++ b/backends/platform/android/events.cpp
@@ -475,6 +475,60 @@ void OSystem_Android::pushEvent(int type, int arg1, int arg2, int arg3,
 
 		return;
 
+	case JE_MMB_DOWN:
+		e.type = Common::EVENT_MBUTTONDOWN;
+		e.mouse.x = arg1;
+		e.mouse.y = arg2;
+
+		pushEvent(e);
+
+		return;
+
+	case JE_MMB_UP:
+		e.type = Common::EVENT_MBUTTONUP;
+		e.mouse.x = arg1;
+		e.mouse.y = arg2;
+
+		pushEvent(e);
+
+		return;
+
+	case JE_BMB_DOWN:
+		e.type = Common::EVENT_X1BUTTONDOWN;
+		e.mouse.x = arg1;
+		e.mouse.y = arg2;
+
+		pushEvent(e);
+
+		return;
+
+	case JE_BMB_UP:
+		e.type = Common::EVENT_X1BUTTONUP;
+		e.mouse.x = arg1;
+		e.mouse.y = arg2;
+
+		pushEvent(e);
+
+		return;
+
+	case JE_FMB_DOWN:
+		e.type = Common::EVENT_X2BUTTONDOWN;
+		e.mouse.x = arg1;
+		e.mouse.y = arg2;
+
+		pushEvent(e);
+
+		return;
+
+	case JE_FMB_UP:
+		e.type = Common::EVENT_X2BUTTONUP;
+		e.mouse.x = arg1;
+		e.mouse.y = arg2;
+
+		pushEvent(e);
+
+		return;
+
 	case JE_GAMEPAD:
 		switch (arg1) {
 		case JACTION_DOWN:
@@ -547,18 +601,6 @@ void OSystem_Android::pushEvent(int type, int arg1, int arg2, int arg3,
 
 		return;
 
-	case JE_MMB_DOWN:
-		e.type = Common::EVENT_MAINMENU;
-
-		pushEvent(e);
-
-		return;
-
-	case JE_MMB_UP:
-		// No action
-
-		return;
-
 	case JE_QUIT:
 		e.type = Common::EVENT_QUIT;
 
@@ -617,17 +659,9 @@ bool OSystem_Android::pollEvent(Common::Event &event) {
 
 	unlockMutex(_event_queue_lock);
 
-	switch (event.type) {
-	case Common::EVENT_MOUSEMOVE:
-	case Common::EVENT_LBUTTONDOWN:
-	case Common::EVENT_LBUTTONUP:
-	case Common::EVENT_RBUTTONDOWN:
-	case Common::EVENT_RBUTTONUP:
+	if (Common::isMouseEvent(event)) {
 		if (_graphicsManager)
 			return dynamic_cast<AndroidGraphicsManager *>(_graphicsManager)->notifyMousePosition(event.mouse);
-		break;
-	default:
-		break;
 	}
 
 	return true;
diff --git a/backends/platform/android/events.h b/backends/platform/android/events.h
index 6973ff203c..61bb209b5c 100644
--- a/backends/platform/android/events.h
+++ b/backends/platform/android/events.h
@@ -50,6 +50,10 @@ enum {
 	JE_JOYSTICK = 15,
 	JE_MMB_DOWN = 16,
 	JE_MMB_UP = 17,
+	JE_BMB_DOWN = 18,
+	JE_BMB_UP = 19,
+	JE_FMB_DOWN = 20,
+	JE_FMB_UP = 21,
 	JE_QUIT = 0x1000
 };
 
diff --git a/backends/platform/android/org/scummvm/scummvm/MouseHelper.java b/backends/platform/android/org/scummvm/scummvm/MouseHelper.java
index 40af18a8a0..190ed137d7 100644
--- a/backends/platform/android/org/scummvm/scummvm/MouseHelper.java
+++ b/backends/platform/android/org/scummvm/scummvm/MouseHelper.java
@@ -15,6 +15,10 @@ public class MouseHelper {
 	private boolean _rmbPressed;
 	private boolean _lmbPressed;
 	private boolean _mmbPressed;
+	private boolean _bmbPressed;
+	private boolean _fmbPressed;
+	private boolean _srmbPressed;
+	private boolean _smmbPressed;
 
 	/**
 	 * Class initialization fails when this throws an exception.
@@ -77,6 +81,25 @@ public class MouseHelper {
 		       ((sources & InputDevice.SOURCE_TOUCHPAD) == InputDevice.SOURCE_TOUCHPAD);
 	}
 
+	private boolean handleButton(MotionEvent e, boolean mbPressed, int mask, int downEvent, int upEvent) {
+		boolean mbDown = (e.getButtonState() & mask) == mask;
+		if (mbDown) {
+			if (!mbPressed) {
+				// left mouse button was pressed just now
+				_scummvm.pushEvent(downEvent, (int)e.getX(), (int)e.getY(), e.getButtonState(), 0, 0, 0);
+			}
+
+			return true;
+		} else {
+			if (mbPressed) {
+				// left mouse button was released just now
+				_scummvm.pushEvent(upEvent, (int)e.getX(), (int)e.getY(), e.getButtonState(), 0, 0, 0);
+			}
+
+			return false;
+		}
+	}
+
 	public boolean onMouseEvent(MotionEvent e, boolean hover) {
 		_scummvm.pushEvent(ScummVMEvents.JE_MOUSE_MOVE, (int)e.getX(), (int)e.getY(), 0, 0, 0, 0);
 
@@ -105,39 +128,12 @@ public class MouseHelper {
 			_lmbPressed = false;
 		}
 
-		boolean rmbDown = (buttonState & MotionEvent.BUTTON_SECONDARY) == MotionEvent.BUTTON_SECONDARY;
-		if (rmbDown) {
-			if (!_rmbPressed) {
-				// right mouse button was pressed just now
-				_scummvm.pushEvent(ScummVMEvents.JE_RMB_DOWN, (int)e.getX(), (int)e.getY(), e.getButtonState(), 0, 0, 0);
-			}
-
-			_rmbPressed = true;
-		} else {
-			if (_rmbPressed) {
-				// right mouse button was released just now
-				_scummvm.pushEvent(ScummVMEvents.JE_RMB_UP, (int)e.getX(), (int)e.getY(), e.getButtonState(), 0, 0, 0);
-			}
-
-			_rmbPressed = false;
-		}
-
-		boolean mmbDown = (buttonState & MotionEvent.BUTTON_TERTIARY) == MotionEvent.BUTTON_TERTIARY;
-		if (mmbDown) {
-			if (!_mmbPressed) {
-				// middle mouse button was pressed just now
-				_scummvm.pushEvent(ScummVMEvents.JE_MMB_DOWN, (int)e.getX(), (int)e.getY(), e.getButtonState(), 0, 0, 0);
-			}
-
-			_mmbPressed = true;
-		} else {
-			if (_mmbPressed) {
-				// middle mouse button was released just now
-				_scummvm.pushEvent(ScummVMEvents.JE_MMB_UP, (int)e.getX(), (int)e.getY(), e.getButtonState(), 0, 0, 0);
-			}
-
-			_mmbPressed = false;
-		}
+		_rmbPressed = handleButton(e, _rmbPressed, MotionEvent.BUTTON_SECONDARY, ScummVMEvents.JE_RMB_DOWN, ScummVMEvents.JE_RMB_UP);
+		_mmbPressed = handleButton(e, _mmbPressed, MotionEvent.BUTTON_TERTIARY, ScummVMEvents.JE_MMB_DOWN, ScummVMEvents.JE_MMB_UP);
+		_bmbPressed = handleButton(e, _bmbPressed, MotionEvent.BUTTON_BACK, ScummVMEvents.JE_BMB_DOWN, ScummVMEvents.JE_BMB_UP);
+		_fmbPressed = handleButton(e, _fmbPressed, MotionEvent.BUTTON_FORWARD, ScummVMEvents.JE_FMB_DOWN, ScummVMEvents.JE_FMB_UP);
+		_srmbPressed = handleButton(e, _srmbPressed, MotionEvent.BUTTON_STYLUS_PRIMARY, ScummVMEvents.JE_RMB_DOWN, ScummVMEvents.JE_RMB_UP);
+		_smmbPressed = handleButton(e, _smmbPressed, MotionEvent.BUTTON_STYLUS_SECONDARY, ScummVMEvents.JE_MMB_DOWN, ScummVMEvents.JE_MMB_UP);
 
 		return true;
 	}
diff --git a/backends/platform/android/org/scummvm/scummvm/ScummVMEvents.java b/backends/platform/android/org/scummvm/scummvm/ScummVMEvents.java
index 70f42b984c..07c4233f0a 100644
--- a/backends/platform/android/org/scummvm/scummvm/ScummVMEvents.java
+++ b/backends/platform/android/org/scummvm/scummvm/ScummVMEvents.java
@@ -36,6 +36,10 @@ public class ScummVMEvents implements
 	public static final int JE_JOYSTICK = 15;
 	public static final int JE_MMB_DOWN = 16;
 	public static final int JE_MMB_UP = 17;
+	public static final int JE_BMB_DOWN = 18;
+	public static final int JE_BMB_UP = 19;
+	public static final int JE_FMB_DOWN = 20;
+	public static final int JE_FMB_UP = 21;
 	public static final int JE_QUIT = 0x1000;
 
 	final protected Context _context;




More information about the Scummvm-git-logs mailing list