[UI] Update gamertag input field only on change

No need to validate gamertag every frame
This commit is contained in:
Gliniak
2026-03-14 23:25:09 +01:00
parent d37c22aad0
commit 8ccf01d151
4 changed files with 13 additions and 12 deletions

View File

@@ -39,15 +39,14 @@ void CreateProfileUI::OnDraw(ImGuiIO& io) {
} }
ImGui::TextUnformatted("Gamertag:"); ImGui::TextUnformatted("Gamertag:");
ImGui::InputText("##Gamertag", gamertag_, sizeof(gamertag_)); if (ImGui::InputText("##Gamertag", gamertag_, sizeof(gamertag_))) {
valid_gamertag_ = profile_manager->IsGamertagValid(std::string(gamertag_));
}
const std::string gamertag_string = std::string(gamertag_); ImGui::BeginDisabled(!valid_gamertag_);
bool valid = profile_manager->IsGamertagValid(gamertag_string);
ImGui::BeginDisabled(!valid);
if (ImGui::Button("Create")) { if (ImGui::Button("Create")) {
bool autologin = (profile_manager->GetAccountCount() == 0); bool autologin = (profile_manager->GetAccountCount() == 0);
if (profile_manager->CreateProfile(gamertag_string, autologin, if (profile_manager->CreateProfile(std::string(gamertag_), autologin,
migration_) && migration_) &&
migration_) { migration_) {
emulator_->DataMigration(0xB13EBABEBABEBABE); emulator_->DataMigration(0xB13EBABEBABEBABE);

View File

@@ -35,6 +35,7 @@ class CreateProfileUI final : public XamDialog {
bool has_opened_ = false; bool has_opened_ = false;
bool migration_ = false; bool migration_ = false;
char gamertag_[16] = ""; char gamertag_[16] = "";
bool valid_gamertag_ = false;
Emulator* emulator_; Emulator* emulator_;
}; };

View File

@@ -148,14 +148,14 @@ void SigninUI::OnDraw(ImGuiIO& io) {
} }
ImGui::TextUnformatted("Gamertag:"); ImGui::TextUnformatted("Gamertag:");
ImGui::InputText("##Gamertag", gamertag_, sizeof(gamertag_)); if (ImGui::InputText("##Gamertag", gamertag_, sizeof(gamertag_))) {
valid_gamertag_ =
profile_manager_->IsGamertagValid(std::string(gamertag_));
}
const std::string gamertag_string = gamertag_; ImGui::BeginDisabled(!valid_gamertag_);
bool valid = profile_manager_->IsGamertagValid(gamertag_string);
ImGui::BeginDisabled(!valid);
if (ImGui::Button("Create")) { if (ImGui::Button("Create")) {
profile_manager_->CreateProfile(gamertag_string, false); profile_manager_->CreateProfile(std::string(gamertag_), false);
std::fill(std::begin(gamertag_), std::end(gamertag_), '\0'); std::fill(std::begin(gamertag_), std::end(gamertag_), '\0');
ImGui::CloseCurrentPopup(); ImGui::CloseCurrentPopup();
creating_profile_ = false; creating_profile_ = false;

View File

@@ -45,6 +45,7 @@ class SigninUI final : public XamDialog {
bool creating_profile_ = false; bool creating_profile_ = false;
char gamertag_[16] = ""; char gamertag_[16] = "";
bool valid_gamertag_ = false;
}; };
} // namespace ui } // namespace ui