From c5be566a6fbf121d1ca140586a02cda18f83b11b Mon Sep 17 00:00:00 2001
From: andreykproductengine <andreykproductengine@lindenlab.com>
Date: Mon, 20 Jan 2020 14:43:48 +0200
Subject: [PATCH] SL-12596 Fixed incorectly enabled checkbox and enabled login
 button

---
 indra/newview/llpanellogin.cpp                    | 15 +++++++++++----
 .../newview/skins/default/xui/en/panel_login.xml  |  2 +-
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index cfa935cd018..7ef3685cdb2 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -549,16 +549,19 @@ void LLPanelLogin::populateFields(LLPointer<LLCredential> credential, bool remem
         LL_WARNS() << "Attempted fillFields with no login view shown" << LL_ENDL;
         return;
     }
-    LLUICtrl* remember_check = sInstance->getChild<LLUICtrl>("remember_check");
-    remember_check->setValue(remember_psswrd);
     if (sInstance->mFirstLoginThisInstall)
     {
+        LLUICtrl* remember_check = sInstance->getChild<LLUICtrl>("remember_check");
+        remember_check->setValue(remember_psswrd);
         // no list to populate
         setFields(credential);
     }
     else
     {
         sInstance->getChild<LLUICtrl>("remember_name")->setValue(remember_user);
+        LLUICtrl* remember_password = sInstance->getChild<LLUICtrl>("remember_password");
+        remember_password->setValue(remember_psswrd);
+        remember_password->setEnabled(remember_user);
         sInstance->populateUserList(credential);
     }
 }
@@ -746,13 +749,14 @@ void LLPanelLogin::getFields(LLPointer<LLCredential>& credential,
 		}
 	}
 	credential = gSecAPIHandler->createCredential(LLGridManager::getInstance()->getGrid(), identifier, authenticator);
-	remember_psswrd = sInstance->getChild<LLUICtrl>("remember_check")->getValue();
     if (!sInstance->mFirstLoginThisInstall)
     {
+        remember_psswrd = sInstance->getChild<LLUICtrl>("remember_password")->getValue();
         remember_user = sInstance->getChild<LLUICtrl>("remember_name")->getValue();
     }
     else
     {
+        remember_psswrd = sInstance->getChild<LLUICtrl>("remember_check")->getValue();
         remember_user = remember_psswrd; // on panel_login_first "remember_check" is named as 'remember me'
     }
 }
@@ -1080,6 +1084,7 @@ void LLPanelLogin::onUserNameTextEnty(void*)
 {
     sInstance->mPasswordModified = true;
     sInstance->getChild<LLUICtrl>("password_edit")->setValue(std::string());
+    sInstance->mPasswordLength = 0;
     sInstance->addFavoritesToStartLocation(); //will call updateLoginButtons()
 }
 
@@ -1119,7 +1124,7 @@ void LLPanelLogin::onRememberUserCheck(void*)
     if (sInstance && !sInstance->mFirstLoginThisInstall)
     {
         LLCheckBoxCtrl* remember_name(sInstance->getChild<LLCheckBoxCtrl>("remember_name"));
-        LLCheckBoxCtrl* remember_psswrd(sInstance->getChild<LLCheckBoxCtrl>("remember_check"));
+        LLCheckBoxCtrl* remember_psswrd(sInstance->getChild<LLCheckBoxCtrl>("remember_password"));
         LLComboBox* user_combo(sInstance->getChild<LLComboBox>("username_combo"));
 
         bool remember = remember_name->getValue().asBoolean();
@@ -1179,6 +1184,8 @@ void LLPanelLogin::updateServer()
 				// restore creds
 				user_combo->setTextEntry(username);
 				pswd_edit->setValue(password);
+				sInstance->mUsernameLength = username.length();
+				sInstance->mPasswordLength = password.length();
 			}
 			else
 			{
diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml
index 9da0c815edc..eab53c99854 100644
--- a/indra/newview/skins/default/xui/en/panel_login.xml
+++ b/indra/newview/skins/default/xui/en/panel_login.xml
@@ -151,7 +151,7 @@
     label_text.word_wrap="true"
     label_text.width="150"
     check_button.bottom="3"
-    name="remember_check"
+    name="remember_password"
     width="170" />
   <combo_box
     allow_text_entry="false"
-- 
GitLab