From 9d326f9c6bcbb62b120a33930a23f223667cd040 Mon Sep 17 00:00:00 2001 From: Thunderblade73 <85900443+Thunderblade73@users.noreply.github.com> Date: Sat, 7 Sep 2024 16:14:23 +0200 Subject: Backend: Renderable searchbox (#2475) --- .../at/hannibal2/skyhanni/data/model/TextInput.kt | 41 ++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) (limited to 'src/main/java/at/hannibal2/skyhanni/data') diff --git a/src/main/java/at/hannibal2/skyhanni/data/model/TextInput.kt b/src/main/java/at/hannibal2/skyhanni/data/model/TextInput.kt index d7e6ff8e1..6ae2342b6 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/model/TextInput.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/model/TextInput.kt @@ -8,6 +8,7 @@ import at.hannibal2.skyhanni.utils.StringUtils.insert import kotlinx.coroutines.runBlocking import net.minecraft.client.settings.KeyBinding import org.lwjgl.input.Keyboard +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable class TextInput { @@ -22,16 +23,35 @@ class TextInput { } }.replace("(? Unit>() + + fun registerToEvent(key: Int, event: (TextInput) -> Unit) { + updateEvents[key] = event + } + + fun removeFromEvent(key: Int) { + updateEvents.remove(key) + } + companion object { private var activeInstance: TextInput? = null @@ -51,6 +71,13 @@ class TextInput { } } + fun onGuiInput(ci: CallbackInfo) { + if (activeInstance != null) { + ci.cancel() + return + } + } + private var timeSinceKeyEvent = 0L private var carriage @@ -65,6 +92,13 @@ class TextInput { activeInstance?.textBox = value } + private fun updated() { + with(activeInstance) { + if (this == null) return + this.updateEvents.forEach { (_, it) -> it(this) } + } + } + private fun handleTextInput() { if (KeyboardManager.isCopyingKeysDown()) { OSUtils.copyToClipboard(textBox) @@ -73,6 +107,7 @@ class TextInput { if (KeyboardManager.isPastingKeysDown()) { runBlocking { textBox = OSUtils.readFromClipboard() ?: return@runBlocking + updated() } return } @@ -96,6 +131,7 @@ class TextInput { } else { textBox.dropLast(1) } + updated() return } @@ -122,6 +158,7 @@ class TextInput { textBox + char } } + updated() } private fun moveCarriageRight(carriage: Int) = carriage + 1 -- cgit