fix: Closing storage overlay when searching for "e"

This commit is contained in:
Linnea Gräf
2025-01-12 14:36:06 +01:00
parent 29bdb00b7f
commit 4562d294bb
2 changed files with 13 additions and 1 deletions

View File

@@ -302,6 +302,7 @@ class StorageOverlayScreen : Screen(Text.literal("")) {
}
fun mouseClicked(mouseX: Double, mouseY: Double, button: Int, activePage: StoragePageSlot?): Boolean {
guiContext.setFocusedElement(null) // Blur all elements. They will be refocused by clickMCComponentInPlace if in doubt, and we don't have any double click components.
if (getScrollPanelInner().contains(mouseX, mouseY)) {
val data = StorageOverlay.Data.data ?: StorageData()
layoutedForEach(data) { rect, page, _ ->

View File

@@ -25,6 +25,7 @@ import kotlin.time.Duration
import kotlin.time.Duration.Companion.seconds
import net.minecraft.client.gui.DrawContext
import net.minecraft.client.gui.screen.Screen
import net.minecraft.client.util.InputUtil
import moe.nea.firmament.gui.BarComponent
import moe.nea.firmament.gui.FirmButtonComponent
import moe.nea.firmament.gui.FirmHoverComponent
@@ -257,7 +258,17 @@ object MoulConfigUtils {
keyboardEvent: KeyboardEvent
): Boolean {
val immContext = createInPlaceFullContext(null, IMinecraft.instance.mouseX, IMinecraft.instance.mouseY)
return component.keyboardEvent(keyboardEvent, immContext.translated(x, y, w, h))
if (component.keyboardEvent(keyboardEvent, immContext.translated(x, y, w, h)))
return true
if (component.context.getFocusedElement() != null) {
if (keyboardEvent is KeyboardEvent.KeyPressed
&& keyboardEvent.pressed && keyboardEvent.keycode == InputUtil.GLFW_KEY_ESCAPE
) {
component.context.setFocusedElement(null)
}
return true
}
return false
}
fun clickMCComponentInPlace(