diff --git a/es-core/src/components/TextEditComponent.cpp b/es-core/src/components/TextEditComponent.cpp index 1bf67ad1b..87475188b 100644 --- a/es-core/src/components/TextEditComponent.cpp +++ b/es-core/src/components/TextEditComponent.cpp @@ -130,6 +130,9 @@ std::string TextEditComponent::getValue() const void TextEditComponent::startEditing() { + if (mEditing) + return; + SDL_StartTextInput(); mEditing = true; updateHelpPrompts(); @@ -138,6 +141,9 @@ void TextEditComponent::startEditing() void TextEditComponent::stopEditing() { + if (!mEditing) + return; + SDL_StopTextInput(); mEditing = false; mMaskInput = false; @@ -215,7 +221,7 @@ bool TextEditComponent::input(InputConfig* config, Input input) moveCursor(mCursorRepeatDir); return false; } - else if (cursorDown) { + else if (cursorDown && isEditing()) { // Stop editing and let the button down event be captured by the parent component. stopEditing(); return false; @@ -238,6 +244,9 @@ bool TextEditComponent::input(InputConfig* config, Input input) return true; } + if (config->isMappedTo("b", input)) + stopEditing(); + // Consume all input when editing text. mMaskInput = false; return true; diff --git a/es-core/src/guis/GuiTextEditKeyboardPopup.cpp b/es-core/src/guis/GuiTextEditKeyboardPopup.cpp index fec7081fd..4611adced 100644 --- a/es-core/src/guis/GuiTextEditKeyboardPopup.cpp +++ b/es-core/src/guis/GuiTextEditKeyboardPopup.cpp @@ -378,15 +378,15 @@ bool GuiTextEditKeyboardPopup::input(InputConfig* config, Input input) "", nullptr, nullptr, true)); } else { + if (mText->isEditing()) + mText->stopEditing(); delete this; return true; } } - if (mText->isEditing() && config->isMappedLike("down", input) && input.value) { - mText->stopEditing(); + if (mText->isEditing() && config->isMappedLike("down", input) && input.value) mGrid.setCursorTo(mGrid.getSelectedComponent()); - } // Left trigger button outside text editing field toggles Shift key. if (!mText->isEditing() && config->isMappedLike("lefttrigger", input) && input.value) diff --git a/es-core/src/guis/GuiTextEditPopup.cpp b/es-core/src/guis/GuiTextEditPopup.cpp index 0d95eada9..55b1c22d0 100644 --- a/es-core/src/guis/GuiTextEditPopup.cpp +++ b/es-core/src/guis/GuiTextEditPopup.cpp @@ -205,15 +205,15 @@ bool GuiTextEditPopup::input(InputConfig* config, Input input) "", nullptr, nullptr, true)); } else { + if (mText->isEditing()) + mText->stopEditing(); delete this; return true; } } - if (mText->isEditing() && config->isMappedLike("down", input) && input.value) { - mText->stopEditing(); + if (mText->isEditing() && config->isMappedLike("down", input) && input.value) mGrid.setCursorTo(mGrid.getSelectedComponent()); - } // Left shoulder button deletes a character (backspace). if (config->isMappedTo("leftshoulder", input)) {