diff --git a/src/main/java/meteordevelopment/meteorclient/gui/WidgetScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/WidgetScreen.java index ab25838f07..7f8d3fdf37 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/WidgetScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/WidgetScreen.java @@ -55,6 +55,8 @@ public abstract class WidgetScreen extends Screen { private boolean onClose; private boolean debug; + private boolean closing; + private double lastMouseX, lastMouseY; public double animProgress; @@ -255,9 +257,13 @@ public void renderCustom(DrawContext context, int mouseX, int mouseY, float delt mouseX *= s; mouseY *= s; - animProgress += delta / 20 * 14; + animProgress += (delta / 20 * 14) * (closing ? -1 : 1); animProgress = MathHelper.clamp(animProgress, 0, 1); + if (closing && (animProgress == 0 || parent != null)) { + closeInternal(); + } + GuiKeyEvents.canUseKeys = true; // Apply projection without scaling @@ -304,12 +310,7 @@ public void resize(MinecraftClient client, int width, int height) { @Override public void close() { if (!locked || lockedAllowClose) { - boolean preOnClose = onClose; - onClose = true; - - removed(); - - onClose = preOnClose; + closing = true; } } @@ -341,6 +342,16 @@ public void removed() { } } + private void closeInternal() { + boolean preOnClose = onClose; + onClose = true; + + super.close(); + removed(); + + onClose = preOnClose; + } + private void loopWidgets(WWidget widget, Consumer action) { action.accept(widget);