From a159e6b1d19b8b8d0051b10f614c5c04be2e55e1 Mon Sep 17 00:00:00 2001 From: Danielshe Date: Fri, 1 Nov 2019 15:13:34 +0800 Subject: Close #161 --- .../shedaniel/rei/gui/ContainerScreenOverlay.java | 44 +++++++++++++++++++++- .../rei/gui/credits/CreditsEntryListWidget.java | 3 +- .../me/shedaniel/rei/gui/widget/ButtonWidget.java | 2 +- .../rei/gui/widget/SearchFieldWidget.java | 7 ++++ 4 files changed, 53 insertions(+), 3 deletions(-) (limited to 'src/main/java/me') diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index 1f44adaa4..8ab4f5e3d 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -134,6 +134,11 @@ public class ContainerScreenOverlay extends Widget { public boolean changeFocus(boolean boolean_1) { return false; } + + @Override + public boolean containsMouse(double mouseX, double mouseY) { + return isNotInExclusionZones(mouseX, mouseY) && super.containsMouse(mouseX, mouseY); + } }); widgets.add(buttonRight = new ButtonWidget(rectangle.x + rectangle.width - 18, rectangle.y + (RoughlyEnoughItemsCore.getConfigManager().getConfig().getSearchFieldLocation() == SearchFieldLocation.TOP_SIDE ? 24 : 0) + 5, 16, 16, new TranslatableText("text.rei.right_arrow")) { @Override @@ -153,6 +158,11 @@ public class ContainerScreenOverlay extends Widget { public boolean changeFocus(boolean boolean_1) { return false; } + + @Override + public boolean containsMouse(double mouseX, double mouseY) { + return isNotInExclusionZones(mouseX, mouseY) && super.containsMouse(mouseX, mouseY); + } }); } @@ -203,6 +213,11 @@ public class ContainerScreenOverlay extends Widget { public boolean changeFocus(boolean boolean_1) { return false; } + + @Override + public boolean containsMouse(double mouseX, double mouseY) { + return isNotInExclusionZones(mouseX, mouseY) && super.containsMouse(mouseX, mouseY); + } }); if (RoughlyEnoughItemsCore.getConfigManager().getConfig().doesShowUtilsButtons()) { widgets.add(new ButtonWidget(RoughlyEnoughItemsCore.getConfigManager().getConfig().isLeftHandSidePanel() ? window.getScaledWidth() - 55 : 35, 10, 20, 20, "") { @@ -226,6 +241,11 @@ public class ContainerScreenOverlay extends Widget { public boolean changeFocus(boolean boolean_1) { return false; } + + @Override + public boolean containsMouse(double mouseX, double mouseY) { + return isNotInExclusionZones(mouseX, mouseY) && super.containsMouse(mouseX, mouseY); + } }); int xxx = RoughlyEnoughItemsCore.getConfigManager().getConfig().isLeftHandSidePanel() ? window.getScaledWidth() - 30 : 10; for (Weather weather : Weather.values()) { @@ -253,6 +273,11 @@ public class ContainerScreenOverlay extends Widget { public boolean changeFocus(boolean boolean_1) { return false; } + + @Override + public boolean containsMouse(double mouseX, double mouseY) { + return isNotInExclusionZones(mouseX, mouseY) && super.containsMouse(mouseX, mouseY); + } }); xxx += RoughlyEnoughItemsCore.getConfigManager().getConfig().isLeftHandSidePanel() ? -25 : 25; } @@ -307,6 +332,11 @@ public class ContainerScreenOverlay extends Widget { setBlitOffset(300); super.lateRender(mouseX, mouseY, delta); } + + @Override + public boolean containsMouse(double mouseX, double mouseY) { + return isNotInExclusionZones(mouseX, mouseY) && super.containsMouse(mouseX, mouseY); + } }); else toggleButtonWidget = null; @@ -594,7 +624,7 @@ public class ContainerScreenOverlay extends Widget { public boolean isInside(double mouseX, double mouseY) { if (!rectangle.contains(mouseX, mouseY)) return false; - for (DisplayHelper.DisplayBoundsHandler handler : RoughlyEnoughItemsCore.getDisplayHelper().getSortedBoundsHandlers(MinecraftClient.getInstance().currentScreen.getClass())) { + for (DisplayHelper.DisplayBoundsHandler handler : RoughlyEnoughItemsCore.getDisplayHelper().getSortedBoundsHandlers(MinecraftClient.getInstance().currentScreen.getClass())) { ActionResult in = handler.isInZone(!RoughlyEnoughItemsCore.getConfigManager().getConfig().isLeftHandSidePanel(), mouseX, mouseY); if (in != ActionResult.PASS) return in == ActionResult.SUCCESS; @@ -602,6 +632,18 @@ public class ContainerScreenOverlay extends Widget { return true; } + public boolean isNotInExclusionZones(double mouseX, double mouseY) { + for (DisplayHelper.DisplayBoundsHandler handler : RoughlyEnoughItemsCore.getDisplayHelper().getSortedBoundsHandlers(MinecraftClient.getInstance().currentScreen.getClass())) { + ActionResult in = handler.isInZone(true, mouseX, mouseY); + if (in != ActionResult.PASS) + return in == ActionResult.SUCCESS; + in = handler.isInZone(false, mouseX, mouseY); + if (in != ActionResult.PASS) + return in == ActionResult.SUCCESS; + } + return true; + } + public boolean isInside(Point point) { return isInside(point.getX(), point.getY()); } diff --git a/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java b/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java index 0dff38d85..3ff8eec01 100644 --- a/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java @@ -5,12 +5,13 @@ package me.shedaniel.rei.gui.credits; +import me.shedaniel.clothconfig2.gui.widget.DynamicNewSmoothScrollingEntryListWidget; import me.shedaniel.clothconfig2.gui.widget.DynamicSmoothScrollingEntryListWidget; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawableHelper; import net.minecraft.text.Text; -public class CreditsEntryListWidget extends DynamicSmoothScrollingEntryListWidget { +public class CreditsEntryListWidget extends DynamicNewSmoothScrollingEntryListWidget { private boolean inFocus; diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java index 7a98f36f4..5f7ce117d 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java @@ -123,7 +123,7 @@ public abstract class ButtonWidget extends WidgetWithBounds { @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { - if (bounds.contains(mouseX, mouseY) && enabled && button == 0) { + if (isMouseOver(mouseX, mouseY) && enabled && button == 0) { minecraft.getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); onPressed(); return true; diff --git a/src/main/java/me/shedaniel/rei/gui/widget/SearchFieldWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/SearchFieldWidget.java index e6e386c2a..f9f03f87e 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/SearchFieldWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/SearchFieldWidget.java @@ -6,7 +6,9 @@ package me.shedaniel.rei.gui.widget; import com.mojang.blaze3d.systems.RenderSystem; +import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.gui.ContainerScreenOverlay; +import me.shedaniel.rei.impl.ScreenHelper; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; @@ -83,6 +85,11 @@ public class SearchFieldWidget extends TextFieldWidget { return super.charTyped(char_1, int_1); } + @Override + public boolean containsMouse(double mouseX, double mouseY) { + return ScreenHelper.getLastOverlay().isNotInExclusionZones(mouseX, mouseY) && super.containsMouse(mouseX, mouseY); + } + @Override public void render(int int_1, int int_2, float float_1) { } -- cgit