From f30cc7b5bb79aae6f012f04f54b461fdb7ee3f64 Mon Sep 17 00:00:00 2001
From: Andrey Kleshchev <andreykproductengine@lindenlab.com>
Date: Tue, 21 Sep 2021 00:17:05 +0300
Subject: [PATCH] =?UTF-8?q?Revert=20"SL-11841=20make=20=E2=80=98Push=20to?=
 =?UTF-8?q?=20talk=E2=80=99=20the=20default=20setting"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This reverts commits:
126877bc5ba45ff6b0b31368c55f894a0beaf5bf
b661f62a7ad4dad9806eda8f4c8f2c9d64b3efbb
ce660c7e7bb6e19a23d634fb6d3249330bf2d74c
---
 indra/newview/app_settings/key_bindings.xml |  8 +++----
 indra/newview/app_settings/settings.xml     |  4 ++--
 indra/newview/llappviewer.cpp               | 24 +++++++++++++++++++++
 indra/newview/llkeyconflict.cpp             |  1 +
 4 files changed, 31 insertions(+), 6 deletions(-)

diff --git a/indra/newview/app_settings/key_bindings.xml b/indra/newview/app_settings/key_bindings.xml
index 2ec9a2586c6..4f6deb1f985 100644
--- a/indra/newview/app_settings/key_bindings.xml
+++ b/indra/newview/app_settings/key_bindings.xml
@@ -32,7 +32,7 @@
     <binding key="ENTER" mask="NONE" command="start_chat"/>
     <binding key="DIVIDE" mask="NONE" command="start_gesture"/>
 
-    <binding key="" mask="NONE" mouse="MMB" command="voice_follow_key"/>
+    <binding key="" mask="NONE" mouse="MMB" command="toggle_voice"/>
   </first_person>
   <third_person>
     <binding key="A" mask="NONE" command="turn_left"/>
@@ -125,7 +125,7 @@
     <binding key="PAD_ENTER" mask="CTL_ALT_SHIFT" command="start_chat"/>
     <binding key="PAD_DIVIDE" mask="CTL_ALT_SHIFT" command="start_gesture"/>
 
-    <binding key="" mask="NONE" mouse="MMB" command="voice_follow_key"/>
+    <binding key="" mask="NONE" mouse="MMB" command="toggle_voice"/>
     <binding key="" mask="NONE" mouse="LMB" command="walk_to"/>
   </third_person>
   <sitting>
@@ -223,7 +223,7 @@
     <binding key="ENTER" mask="NONE" command="start_chat"/>
     <binding key="DIVIDE" mask="NONE" command="start_gesture"/>
 
-    <binding key="" mask="NONE" mouse="MMB" command="voice_follow_key"/>
+    <binding key="" mask="NONE" mouse="MMB" command="toggle_voice"/>
   </sitting>
   <edit_avatar>
     <!--Avatar editing camera controls-->
@@ -250,6 +250,6 @@
     <binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
     <binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
 
-    <binding key="" mask="NONE" mouse="MMB" command="voice_follow_key"/>
+    <binding key="" mask="NONE" mouse="MMB" command="toggle_voice"/>
   </edit_avatar>
 </keys>
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 952b36adea0..eeb7e6f0aab 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -8308,13 +8308,13 @@
     <key>PushToTalkToggle</key>
     <map>
       <key>Comment</key>
-      <string>Should the push-to-talk toolbar button behave as a toggle</string>
+      <string>Should the push-to-talk button behave as a toggle</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>0</integer>
+      <integer>1</integer>
     </map>
     <key>QAMode</key>
     <map>
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 573cca248cb..ecd62cadf87 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -4562,6 +4562,11 @@ void LLAppViewer::loadKeyBindings()
 			LLKeyboard::keyFromString(key_string, &key);
 		}
 
+		value = gSavedSettings.getBOOL("PushToTalkToggle");
+		std::string control_name = value ? "toggle_voice" : "voice_follow_key";
+		third_person_view.registerControl(control_name, 0, mouse, key, MASK_NONE, true);
+		sitting_view.registerControl(control_name, 0, mouse, key, MASK_NONE, true);
+
 		if (third_person_view.hasUnsavedChanges())
 		{
 			// calls loadBindingsXML()
@@ -4573,6 +4578,25 @@ void LLAppViewer::loadKeyBindings()
 			// calls loadBindingsXML()
 			sitting_view.saveToSettings();
 		}
+
+		// in case of voice we need to repeat this in other modes
+
+		for (U32 i = 0; i < LLKeyConflictHandler::MODE_COUNT - 1; ++i)
+		{
+			// edit and first person modes; MODE_SAVED_SETTINGS not in use at the moment
+			if (i != LLKeyConflictHandler::MODE_THIRD_PERSON && i != LLKeyConflictHandler::MODE_SITTING)
+			{
+				LLKeyConflictHandler handler((LLKeyConflictHandler::ESourceMode)i);
+
+				handler.registerControl(control_name, 0, mouse, key, MASK_NONE, true);
+
+				if (handler.hasUnsavedChanges())
+				{
+					// calls loadBindingsXML()
+					handler.saveToSettings();
+				}
+			}
+		}
 	}
 	// since something might have gone wrong or there might have been nothing to save
 	// (and because otherwise following code will have to be encased in else{}),
diff --git a/indra/newview/llkeyconflict.cpp b/indra/newview/llkeyconflict.cpp
index 52e14d48f7f..b6107eeedf1 100644
--- a/indra/newview/llkeyconflict.cpp
+++ b/indra/newview/llkeyconflict.cpp
@@ -644,6 +644,7 @@ void LLKeyConflictHandler::saveToSettings(bool temporary)
             data = getControl("voice_follow_key", 0);
         }
 
+        gSavedSettings.setBOOL("PushToTalkToggle", can_toggle);
         if (data.isEmpty())
         {
             // legacy viewer has a bug that might crash it if NONE value is assigned.
-- 
GitLab