From c93706616f79f7d8994e66ff47978f861c0c7498 Mon Sep 17 00:00:00 2001 From: w1naenator Date: Thu, 27 Mar 2025 17:49:09 +0200 Subject: [PATCH] Some fixes from @polybiusproxy comments --- src/core/libraries/ime/ime_dialog_ui.cpp | 9 +++++---- src/core/libraries/ime/ime_dialog_ui.h | 2 ++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/core/libraries/ime/ime_dialog_ui.cpp b/src/core/libraries/ime/ime_dialog_ui.cpp index 02169830b..e1ff23acc 100644 --- a/src/core/libraries/ime/ime_dialog_ui.cpp +++ b/src/core/libraries/ime/ime_dialog_ui.cpp @@ -342,7 +342,6 @@ void ImeDialogUi::DrawMultiLineInputText() { void ImeDialogUi::DrawKeyboard() { static bool shift_enabled = false; - enum class KeyboardMode { Letters, Symbols }; static KeyboardMode kb_mode = KeyboardMode::Letters; const char* row1_letters = "QWERTYUIOP"; @@ -355,7 +354,7 @@ void ImeDialogUi::DrawKeyboard() { auto draw_row = [&](const char* row, float offset_x) { SetCursorPosX(offset_x); - for (int i = 0; row[i]; ++i) { + for (int i = 0; row[i] != '\0'; ++i) { char ch = shift_enabled ? row[i] : (char)tolower(row[i]); std::string key(1, ch); if (ImGui::Button(key.c_str(), ImVec2(35, 35))) { @@ -386,15 +385,17 @@ void ImeDialogUi::DrawKeyboard() { // Fix: safely push/pop style only if shift was enabled before clicking bool highlight = shift_enabled; - if (highlight) + if (highlight) { PushStyleColor(ImGuiCol_Button, ImVec4(0.2f, 0.6f, 1.0f, 1.0f)); + } if (Button("SHIFT", ImVec2(75, 35))) { shift_enabled = !shift_enabled; } - if (highlight) + if (highlight) { PopStyleColor(); + } SameLine(); diff --git a/src/core/libraries/ime/ime_dialog_ui.h b/src/core/libraries/ime/ime_dialog_ui.h index 380874fa6..b613ed970 100644 --- a/src/core/libraries/ime/ime_dialog_ui.h +++ b/src/core/libraries/ime/ime_dialog_ui.h @@ -62,6 +62,8 @@ class ImeDialogUi final : public ImGui::Layer { bool first_render = true; std::mutex draw_mutex; + enum class KeyboardMode { Letters, Symbols }; + public: explicit ImeDialogUi(ImeDialogState* state = nullptr, OrbisImeDialogStatus* status = nullptr, OrbisImeDialogResult* result = nullptr);