Why do I still use windows, anyway?

This commit is contained in:
Lirusaito
2019-02-04 17:40:47 -05:00
parent ae308a274c
commit 0ce0f81144
2 changed files with 48 additions and 46 deletions

View File

@@ -368,15 +368,40 @@ void LLPanelLogin::setSiteIsAlive(bool alive)
} }
} }
void LLPanelLogin::clearPassword()
{
getChild<LLUICtrl>("password_edit")->setValue(mIncomingPassword = mMungedPassword = LLStringUtil::null);
}
void LLPanelLogin::hidePassword()
{
// This is a MD5 hex digest of a password.
// We don't actually use the password input field,
// fill it with MAX_PASSWORD characters so we get a
// nice row of asterixes.
getChild<LLUICtrl>("password_edit")->setValue("123456789!123456");
}
void LLPanelLogin::mungePassword(const std::string& password) void LLPanelLogin::mungePassword(const std::string& password)
{ {
// Re-md5 if we've changed at all // Re-md5 if we've changed at all
if (password != mIncomingPassword) if (password != mIncomingPassword)
{ {
LLMD5 pass((unsigned char *)password.c_str()); // Max "actual" password length is 16 characters.
char munged_password[MD5HEX_STR_SIZE]; // Hex digests are always 32 characters.
pass.hex_digest(munged_password); if (password.length() == MD5HEX_STR_BYTES)
mMungedPassword = munged_password; {
hidePassword();
mMungedPassword = password;
}
else
{
LLMD5 pass((unsigned char *)password.substr(16).c_str());
char munged_password[MD5HEX_STR_SIZE];
pass.hex_digest(munged_password);
mMungedPassword = munged_password;
}
mIncomingPassword = password;
} }
} }
@@ -552,29 +577,11 @@ void LLPanelLogin::setFields(const std::string& firstname,
llassert_always(firstname.find(' ') == std::string::npos); llassert_always(firstname.find(' ') == std::string::npos);
login_combo->setLabel(nameJoin(firstname, lastname, false)); login_combo->setLabel(nameJoin(firstname, lastname, false));
// Max "actual" password length is 16 characters. sInstance->mungePassword(password);
// Hex digests are always 32 characters. if (sInstance->mIncomingPassword != sInstance->mMungedPassword)
if (password.length() == 32)
{
// This is a MD5 hex digest of a password.
// We don't actually use the password input field,
// fill it with MAX_PASSWORD characters so we get a
// nice row of asterixes.
const std::string filler("123456789!123456");
sInstance->getChild<LLUICtrl>("password_edit")->setValue(filler);
sInstance->mIncomingPassword = filler;
sInstance->mMungedPassword = password;
}
else
{
// this is a normal text password
sInstance->getChild<LLUICtrl>("password_edit")->setValue(password); sInstance->getChild<LLUICtrl>("password_edit")->setValue(password);
sInstance->mIncomingPassword = password; else
LLMD5 pass((unsigned char *)password.c_str()); sInstance->hidePassword();
char munged_password[MD5HEX_STR_SIZE];
pass.hex_digest(munged_password);
sInstance->mMungedPassword = munged_password;
}
} }
// static // static
@@ -591,33 +598,26 @@ void LLPanelLogin::setFields(const LLSavedLoginEntry& entry, bool takeFocus)
LLComboBox* login_combo = sInstance->getChild<LLComboBox>("username_combo"); LLComboBox* login_combo = sInstance->getChild<LLComboBox>("username_combo");
login_combo->setTextEntry(fullname); login_combo->setTextEntry(fullname);
login_combo->resetTextDirty(); login_combo->resetTextDirty();
//sInstance->getChild<LLUICtrl>("username_combo")->setValue(fullname); //login_combo->setValue(fullname);
std::string grid = entry.getGrid(); const auto& grid = entry.getGrid();
//grid comes via LLSavedLoginEntry, which uses full grid names, not nicks //grid comes via LLSavedLoginEntry, which uses full grid names, not nicks
if(!grid.empty() && gHippoGridManager->getGrid(grid) && grid != gHippoGridManager->getCurrentGridName()) if (!grid.empty() && gHippoGridManager->getGrid(grid) && grid != gHippoGridManager->getCurrentGridName())
{ {
gHippoGridManager->setCurrentGrid(grid); gHippoGridManager->setCurrentGrid(grid);
} }
if (entry.getPassword().empty())
{
sInstance->getChild<LLUICtrl>("password_edit")->setValue(LLStringUtil::null);
remember_pass_check->setValue(LLSD(false));
}
else
{
const std::string filler("123456789!123456");
sInstance->getChild<LLUICtrl>("password_edit")->setValue(filler);
sInstance->mIncomingPassword = filler;
sInstance->mMungedPassword = entry.getPassword();
remember_pass_check->setValue(LLSD(true));
}
if (takeFocus) const auto& password = entry.getPassword();
bool remember_pass = !password.empty();
if (remember_pass)
{ {
giveFocus(); sInstance->mIncomingPassword = sInstance->mMungedPassword = password;
sInstance->hidePassword();
} }
else sInstance->clearPassword();
remember_pass_check->setValue(remember_pass);
if (takeFocus) giveFocus();
} }
// static // static
@@ -1066,7 +1066,7 @@ void LLPanelLogin::onLoginComboLostFocus(LLComboBox* combo_box)
{ {
if (combo_box->isTextDirty()) if (combo_box->isTextDirty())
{ {
getChild<LLUICtrl>("password_edit")->setValue(mIncomingPassword = mMungedPassword = LLStringUtil::null); clearPassword();
combo_box->resetTextDirty(); combo_box->resetTextDirty();
} }
} }

View File

@@ -95,6 +95,8 @@ public:
static void refreshLoginPage(); static void refreshLoginPage();
static void giveFocus(); static void giveFocus();
static void setAlwaysRefresh(bool refresh); static void setAlwaysRefresh(bool refresh);
void clearPassword();
void hidePassword();
void mungePassword(const std::string& password); void mungePassword(const std::string& password);
// inherited from LLViewerMediaObserver // inherited from LLViewerMediaObserver