From 37ca582a2dacfbe7cbb37d2e9ecddca0a9bc8ed7 Mon Sep 17 00:00:00 2001
From: andreykproductengine <andreykproductengine@lindenlab.com>
Date: Fri, 3 Jan 2020 20:12:46 +0200
Subject: [PATCH] SL-9699 Do not disable 'remember me' checkbox

---
 indra/newview/llpanellogin.cpp                | 26 +++++++++++++------
 .../skins/default/xui/en/notifications.xml    |  8 ++++++
 2 files changed, 26 insertions(+), 8 deletions(-)

diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index 4fd39d12117..00172277bc0 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -560,7 +560,6 @@ void LLPanelLogin::populateFields(LLPointer<LLCredential> credential, bool remem
     {
         sInstance->getChild<LLUICtrl>("remember_name")->setValue(remember_user);
         sInstance->populateUserList(credential);
-        remember_check->setEnabled(remember_user);
     }
 }
 
@@ -1112,14 +1111,22 @@ void LLPanelLogin::onUserListCommit(void*)
 }
 
 // static
+// At the moment only happens if !mFirstLoginThisInstall
 void LLPanelLogin::onRememberUserCheck(void*)
 {
-    if (sInstance)
+    if (sInstance && !sInstance->mFirstLoginThisInstall)
     {
         LLCheckBoxCtrl* remember_name(sInstance->getChild<LLCheckBoxCtrl>("remember_name"));
         LLCheckBoxCtrl* remember_psswrd(sInstance->getChild<LLCheckBoxCtrl>("remember_check"));
+        LLComboBox* user_combo(sInstance->getChild<LLComboBox>("username_combo"));
 
         bool remember = remember_name->getValue().asBoolean();
+        if (user_combo->getCurrentIndex() != -1 && !remember)
+        {
+            remember = true;
+            remember_name->setValue(true);
+            LLNotificationsUtil::add("LoginCantRemoveUsername");
+        }
         remember_psswrd->setEnabled(remember);
     }
 }
@@ -1185,12 +1192,15 @@ void LLPanelLogin::updateLoginButtons()
 
 	login_btn->setEnabled(mUsernameLength != 0 && mPasswordLength != 0);
 
-    if (!mFirstLoginThisInstall)
-    {
-        LLComboBox* user_combo = getChild<LLComboBox>("username_combo");
-        LLCheckBoxCtrl* remember_name = getChild<LLCheckBoxCtrl>("remember_name");
-        remember_name->setEnabled(user_combo->getCurrentIndex() == -1);
-    }
+	if (!mFirstLoginThisInstall)
+	{
+		LLComboBox* user_combo = getChild<LLComboBox>("username_combo");
+		LLCheckBoxCtrl* remember_name = getChild<LLCheckBoxCtrl>("remember_name");
+		if (user_combo->getCurrentIndex() != -1)
+		{
+			remember_name->setValue(true);
+		} // Note: might be good idea to do "else remember_name->setValue(mRememberedState)" but it might behave 'weird' to user
+	}
 }
 
 void LLPanelLogin::populateUserList(LLPointer<LLCredential> credential)
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 669d6a40c67..70f31394889 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -3550,6 +3550,14 @@ If this is your first time using [SECOND_LIFE], you will need to create an accou
      yestext="Create Account..."/>
   </notification>
 
+  <notification
+   icon="alertmodal.tga"
+   name="LoginCantRemoveUsername"
+   type="alertmodal">
+    <tag>fail</tag>
+Already remembered user can be forgotten from Me &gt; Preferences &gt; Advanced &gt; Remembered Usernames.
+  </notification>
+
   <notification
    icon="alertmodal.tga"
    name="LoginPacketNeverReceived"
-- 
GitLab