aboutsummaryrefslogtreecommitdiff
path: root/runtime/src
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-06-16 23:23:53 +0800
committershedaniel <daniel@shedaniel.me>2022-06-16 23:24:09 +0800
commitbbeaf18617ce56f34c8407e864f977b7c4b4a3f8 (patch)
treef847adc2f133e236cb35f9c8d01f56314c68d4db /runtime/src
parenta2a8f81802a053eacb1a8074f436d7028d36227b (diff)
downloadRoughlyEnoughItems-bbeaf18617ce56f34c8407e864f977b7c4b4a3f8.tar.gz
RoughlyEnoughItems-bbeaf18617ce56f34c8407e864f977b7c4b4a3f8.tar.bz2
RoughlyEnoughItems-bbeaf18617ce56f34c8407e864f977b7c4b4a3f8.zip
Fix #876
Diffstat (limited to 'runtime/src')
-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 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
@@ -820,6 +820,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 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
@@ -303,8 +303,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;