From 13e6b9a56ff29523ef334db80e006bab25b9fef9 Mon Sep 17 00:00:00 2001 From: Ralty <78720179+Raltyro@users.noreply.github.com> Date: Mon, 2 Mar 2026 21:20:52 +0700 Subject: [PATCH] Fix UITextBox Text Input --- source/funkin/editors/ui/UITextBox.hx | 66 +++++++++++++++------------ 1 file changed, 36 insertions(+), 30 deletions(-) diff --git a/source/funkin/editors/ui/UITextBox.hx b/source/funkin/editors/ui/UITextBox.hx index 54919d96..5486059d 100644 --- a/source/funkin/editors/ui/UITextBox.hx +++ b/source/funkin/editors/ui/UITextBox.hx @@ -72,7 +72,10 @@ class UITextBox extends UISliceSprite implements IUIFocusable { framesOffset = (selected ? 18 : (hovered ? 9 : 0)); @:privateAccess { if (selected) { - __wasFocused = true; + if (!__wasFocused) { + __wasFocused = true; + FlxG.stage.window.textInputEnabled = true; + } caretSpr.alpha = (FlxG.game.ticks % 666) >= 333 ? 1 : 0; var curPos = switch (position) { @@ -92,6 +95,7 @@ class UITextBox extends UISliceSprite implements IUIFocusable { } else { if (__wasFocused) { __wasFocused = false; + FlxG.stage.window.textInputEnabled = false; if (onChange != null) onChange(label.text); } @@ -133,6 +137,7 @@ class UITextBox extends UISliceSprite implements IUIFocusable { focused = false; if (onChange != null) onChange(label.text); + return; case LEFT: if (modifier.ctrlKey) { if (position == 0) @@ -149,6 +154,7 @@ class UITextBox extends UISliceSprite implements IUIFocusable { } changeSelection(-1); + return; case RIGHT: if (modifier.ctrlKey) { if (position == label.text.length) @@ -165,6 +171,7 @@ class UITextBox extends UISliceSprite implements IUIFocusable { } changeSelection(1); + return; case BACKSPACE: FlxG.sound.play(Paths.sound(Flags.DEFAULT_EDITOR_TEXTREMOVE_SOUND)); @@ -181,6 +188,7 @@ class UITextBox extends UISliceSprite implements IUIFocusable { label.text = label.text.substr(0, position - 1) + label.text.substr(position); changeSelection(-1); } + return; case DELETE: FlxG.sound.play(Paths.sound(Flags.DEFAULT_EDITOR_TEXTREMOVE_SOUND)); @@ -196,48 +204,46 @@ class UITextBox extends UISliceSprite implements IUIFocusable { if (position < label.text.length) { label.text = label.text.substr(0, position) + label.text.substr(position + 1); } + return; case HOME: position = 0; + return; case END: position = label.text.length; + return; case V: - FlxG.sound.play(Paths.sound(Flags.DEFAULT_EDITOR_PASTE_SOUND)); - // Hey lj here, fixed copying because before we checked if the modifier was left or right ctrl - // but somehow it gave a int outside of the KeyModifier's range :sob: - // apparently there is a boolean that just checks for you. yw :D + if (modifier.ctrlKey) { + FlxG.sound.play(Paths.sound(Flags.DEFAULT_EDITOR_PASTE_SOUND)); - // if we are not holding ctrl, ignore - if (!modifier.ctrlKey) - return; - // we pasting - var data:String = Clipboard.generalClipboard.getData(TEXT_FORMAT); - if (data != null) - onTextInput(data); + // Hey lj here, fixed copying because before we checked if the modifier was left or right ctrl + // but somehow it gave a int outside of the KeyModifier's range :sob: + // apparently there is a boolean that just checks for you. yw :D + + // we pasting + var data:String = Clipboard.generalClipboard.getData(TEXT_FORMAT); + if (data != null) + onTextInput(data); + } case C: - FlxG.sound.play(Paths.sound(Flags.DEFAULT_EDITOR_COPY_SOUND)); - // if we are not holding ctrl, ignore - if (!modifier.ctrlKey) - return; + if (modifier.ctrlKey) { + FlxG.sound.play(Paths.sound(Flags.DEFAULT_EDITOR_COPY_SOUND)); - // copying - Clipboard.generalClipboard.setData(TEXT_FORMAT, label.text); + Clipboard.generalClipboard.setData(TEXT_FORMAT, label.text); + } case X: - FlxG.sound.play(Paths.sound(Flags.DEFAULT_EDITOR_CUT_SOUND)); + if (modifier.ctrlKey) { + FlxG.sound.play(Paths.sound(Flags.DEFAULT_EDITOR_CUT_SOUND)); - // if we are not holding ctrl, ignore - if (!modifier.ctrlKey) + Clipboard.generalClipboard.setData(TEXT_FORMAT, label.text); + position = 0; + label.text = ""; return; - - // cutting - Clipboard.generalClipboard.setData(TEXT_FORMAT, label.text); - position = 0; - label.text = ""; + } default: - if (modifier.ctrlKey || modifier.altKey || modifier.shiftKey) - return; - - FlxG.sound.play(Paths.sound(Flags.DEFAULT_EDITOR_TEXTTYPE_SOUND)); } + + if (modifier.ctrlKey || modifier.altKey || modifier.shiftKey) return; + FlxG.sound.play(Paths.sound(Flags.DEFAULT_EDITOR_TEXTTYPE_SOUND)); } public function changeSelection(change:Int) {