From 6aab234105d6eed022afbea388ae21530c7e99dd Mon Sep 17 00:00:00 2001
From: andreykproductengine <andreykproductengine@lindenlab.com>
Date: Thu, 3 Oct 2019 22:45:29 +0300
Subject: SL-6109 Remade 'ignore' list processing, renamed and reformed
 keybindings

---
 indra/llcommon/llkeybind.cpp | 9 +++------
 indra/llcommon/llkeybind.h   | 3 ++-
 2 files changed, 5 insertions(+), 7 deletions(-)

(limited to 'indra/llcommon')

diff --git a/indra/llcommon/llkeybind.cpp b/indra/llcommon/llkeybind.cpp
index ff88a9c9aa..46a3230240 100644
--- a/indra/llcommon/llkeybind.cpp
+++ b/indra/llcommon/llkeybind.cpp
@@ -92,14 +92,11 @@ LLSD LLKeyData::asLLSD() const
     LLSD data;
     data["mouse"] = (LLSD::Integer)mMouse;
     data["key"] = (LLSD::Integer)mKey;
+    data["mask"] = (LLSD::Integer)mMask;
     if (mIgnoreMasks)
     {
         data["ignore_accelerators"] = (LLSD::Boolean)mIgnoreMasks;
     }
-    else
-    {
-        data["mask"] = (LLSD::Integer)mMask;
-    }
     return data;
 }
 
@@ -147,7 +144,7 @@ bool LLKeyData::canHandle(const LLKeyData& data) const
 {
     if (data.mKey == mKey
         && data.mMouse == mMouse
-        && (mIgnoreMasks || data.mMask == mMask))
+        && ((mIgnoreMasks && (data.mMask & mMask) == data.mMask) || data.mMask == mMask))
     {
         return true;
     }
@@ -158,7 +155,7 @@ bool LLKeyData::canHandle(EMouseClickType mouse, KEY key, MASK mask) const
 {
     if (mouse == mMouse
         && key == mKey
-        && (mIgnoreMasks || mask == mMask))
+        && ((mIgnoreMasks && (mask & mMask) == mask) || mask == mMask))
     {
         return true;
     }
diff --git a/indra/llcommon/llkeybind.h b/indra/llcommon/llkeybind.h
index 39cb668aac..ad0ebec67c 100644
--- a/indra/llcommon/llkeybind.h
+++ b/indra/llcommon/llkeybind.h
@@ -53,7 +53,8 @@ public:
     EMouseClickType mMouse;
     KEY mKey;
     MASK mMask;
-    bool mIgnoreMasks;
+    // Either to expect exact match or ignore not expected masks
+    bool mIgnoreMasks; 
 };
 
 // One function can bind to multiple Key options
-- 
cgit v1.2.3