aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-06-16 23:23:53 +0800
committershedaniel <daniel@shedaniel.me>2022-06-16 23:23:53 +0800
commitb8ba145efbe6d9b542cae59f3a6b32176c87c5bc (patch)
tree1b59db503d1db61f008669e6141b5a246de6cee6 /runtime/src/main
parent4b905c710d65ce50516a02cf3808269e8f493b0b (diff)
downloadRoughlyEnoughItems-b8ba145efbe6d9b542cae59f3a6b32176c87c5bc.tar.gz
RoughlyEnoughItems-b8ba145efbe6d9b542cae59f3a6b32176c87c5bc.tar.bz2
RoughlyEnoughItems-b8ba145efbe6d9b542cae59f3a6b32176c87c5bc.zip
Fix #876
Diffstat (limited to 'runtime/src/main')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java12
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java15
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java12
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;