From c5bcb31d00cdac597ce6e406c253ba456e9436c8 Mon Sep 17 00:00:00 2001
From: Mnikolenko ProductEngine <mnikolenko@productengine.com>
Date: Fri, 19 Jul 2019 13:40:17 +0300
Subject: [PATCH] SL-11592 [Mac] Fixed mouse buttons ids for correct handling.

---
 indra/llwindow/llmousehandler.cpp | 8 ++++++++
 indra/llwindow/llwindowmacosx.cpp | 9 +++++----
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/indra/llwindow/llmousehandler.cpp b/indra/llwindow/llmousehandler.cpp
index bea66e763c2..d5fa65fe4b0 100644
--- a/indra/llwindow/llmousehandler.cpp
+++ b/indra/llwindow/llmousehandler.cpp
@@ -38,6 +38,10 @@ BOOL LLMouseHandler::handleAnyMouseClick(S32 x, S32 y, MASK mask, EClickType cli
 		case CLICK_RIGHT: handled = handleRightMouseDown(x, y, mask); break;
 		case CLICK_MIDDLE: handled = handleMiddleMouseDown(x, y, mask); break;
 		case CLICK_DOUBLELEFT: handled = handleDoubleClick(x, y, mask); break;
+		case CLICK_BUTTON4:
+		case CLICK_BUTTON5:
+			LL_INFOS() << "Handle mouse button " << clicktype + 1 << " down." << LL_ENDL;
+			break;
 		default:
 			LL_WARNS() << "Unhandled enum." << LL_ENDL;
 		}
@@ -50,6 +54,10 @@ BOOL LLMouseHandler::handleAnyMouseClick(S32 x, S32 y, MASK mask, EClickType cli
 		case CLICK_RIGHT: handled = handleRightMouseUp(x, y, mask); break;
 		case CLICK_MIDDLE: handled = handleMiddleMouseUp(x, y, mask); break;
 		case CLICK_DOUBLELEFT: handled = handleDoubleClick(x, y, mask); break;
+		case CLICK_BUTTON4:
+		case CLICK_BUTTON5:
+			LL_INFOS() << "Handle mouse button " << clicktype + 1 << " up." << LL_ENDL;
+			break;
 		default:
 			LL_WARNS() << "Unhandled enum." << LL_ENDL;
 		}
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index 6749b3be3bf..d9b95d311ae 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -426,13 +426,14 @@ void callOtherMouseDown(float *pos, MASK mask, int button)
 	gWindowImplementation->getMouseDeltas(deltas);
 	outCoords.mX += deltas[0];
 	outCoords.mY += deltas[1];
-    if (button == 3)
+
+    if (button == 2)
     {
         gWindowImplementation->getCallbacks()->handleMiddleMouseDown(gWindowImplementation, outCoords, mask);
     }
     else
     {
-        gWindowImplementation->getCallbacks()->handleOtherMouseDown(gWindowImplementation, outCoords, mask, button);
+        gWindowImplementation->getCallbacks()->handleOtherMouseDown(gWindowImplementation, outCoords, mask, button + 1);
     }
 }
 
@@ -445,13 +446,13 @@ void callOtherMouseUp(float *pos, MASK mask, int button)
 	gWindowImplementation->getMouseDeltas(deltas);
 	outCoords.mX += deltas[0];
     outCoords.mY += deltas[1];
-    if (button == 3)
+    if (button == 2)
     {
         gWindowImplementation->getCallbacks()->handleMiddleMouseUp(gWindowImplementation, outCoords, mask);
     }
     else
     {
-        gWindowImplementation->getCallbacks()->handleOtherMouseUp(gWindowImplementation, outCoords, mask, button);
+        gWindowImplementation->getCallbacks()->handleOtherMouseUp(gWindowImplementation, outCoords, mask, button + 1);
     }
 }
 
-- 
GitLab