From bbeaf18617ce56f34c8407e864f977b7c4b4a3f8 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Thu, 16 Jun 2022 23:23:53 +0800 Subject: Fix #876 --- .../me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java | 12 ++++++++++++ .../shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java | 15 +++++++++++++++ .../impl/client/gui/widget/search/OverlaySearchField.java | 12 +++++++++++- 3 files changed, 38 insertions(+), 1 deletion(-) (limited to 'runtime/src') diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java index 4eb7de768..fbed13ecf 100644 --- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java +++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java @@ -421,6 +421,18 @@ public class RoughlyEnoughItemsCoreClient { return EventResult.interruptFalse(); return EventResult.pass(); }); + ClientScreenInputEvent.KEY_RELEASED_PRE.register((minecraftClient, screen, i, i1, i2) -> { + if (shouldReturn(screen)) + return EventResult.pass(); + if (screen.getFocused() != null && screen.getFocused() instanceof EditBox || (screen.getFocused() instanceof RecipeBookComponent && ((RecipeBookComponent) screen.getFocused()).searchBox != null && ((RecipeBookComponent) screen.getFocused()).searchBox.isFocused())) + if (!REIRuntimeImpl.getSearchField().isFocused()) + return EventResult.pass(); + resetFocused(screen); + if (getOverlay().keyReleased(i, i1, i2) + && resetFocused(screen)) + return EventResult.interruptFalse(); + return EventResult.pass(); + }); } private boolean resetFocused(Screen screen) { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java index 20072ec30..4127f3fcf 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java @@ -819,6 +819,21 @@ public class ScreenOverlayImpl extends ScreenOverlay { return false; } + @Override + public boolean keyReleased(int keyCode, int scanCode, int modifiers) { + if (!hasSpace()) return false; + if (REIRuntime.getInstance().isOverlayVisible()) { + if (choosePageWidget == null) { + if (REIRuntimeImpl.getSearchField().keyReleased(keyCode, scanCode, modifiers)) + return true; + for (GuiEventListener listener : widgets) + if (listener != REIRuntimeImpl.getSearchField() && listener == getFocused() && listener.keyPressed(keyCode, scanCode, modifiers)) + return true; + } + } + return false; + } + @Override public boolean charTyped(char character, int modifiers) { if (!REIRuntime.getInstance().isOverlayVisible()) diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java index 951059664..3b8615bfd 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java @@ -302,9 +302,19 @@ public class OverlaySearchField extends TextFieldWidget implements TextFieldWidg return super.keyPressed(int_1, int_2, int_3); } + @Override + public boolean keyReleased(int keyCode, int scanCode, int modifiers) { + if (this.isVisible() && this.isFocused() && isMain && keybindFocusKey != -1) { + keybindFocusTime = -1; + keybindFocusKey = -1; + return true; + } + return super.keyReleased(keyCode, scanCode, modifiers); + } + @Override public boolean charTyped(char char_1, int int_1) { - if (System.currentTimeMillis() - keybindFocusTime < 1000 && InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), keybindFocusKey)) { + if (isMain && System.currentTimeMillis() - keybindFocusTime < 1000 && keybindFocusKey != -1 && InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), keybindFocusKey)) { keybindFocusTime = -1; keybindFocusKey = -1; return true; -- cgit