diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-06-16 23:23:53 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-06-16 23:23:53 +0800 |
| commit | b8ba145efbe6d9b542cae59f3a6b32176c87c5bc (patch) | |
| tree | 1b59db503d1db61f008669e6141b5a246de6cee6 /runtime/src/main/java/me | |
| parent | 4b905c710d65ce50516a02cf3808269e8f493b0b (diff) | |
| download | RoughlyEnoughItems-b8ba145efbe6d9b542cae59f3a6b32176c87c5bc.tar.gz RoughlyEnoughItems-b8ba145efbe6d9b542cae59f3a6b32176c87c5bc.tar.bz2 RoughlyEnoughItems-b8ba145efbe6d9b542cae59f3a6b32176c87c5bc.zip | |
Fix #876
Diffstat (limited to 'runtime/src/main/java/me')
3 files changed, 38 insertions, 1 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java index d0b14eec5..07ce4f764 100644 --- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java +++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java @@ -424,6 +424,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 98ab45649..e4b22622b 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 @@ -822,6 +822,21 @@ public class ScreenOverlayImpl extends ScreenOverlay { } @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()) return false; 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 951427173..3f078bd01 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 @@ -304,8 +304,18 @@ public class OverlaySearchField extends TextFieldWidget implements TextFieldWidg } @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; |
