From 52532096257f49ab5fc7a66187c8343c54d24817 Mon Sep 17 00:00:00 2001 From: Sollace Date: Mon, 28 Aug 2023 21:13:39 +0100 Subject: [PATCH] Fix tooltips not working for buttons that override renderButton --- .../common/client/gui/element/Button.java | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/minelittlepony/common/client/gui/element/Button.java b/src/main/java/com/minelittlepony/common/client/gui/element/Button.java index 24b71a76..d0f72ce1 100644 --- a/src/main/java/com/minelittlepony/common/client/gui/element/Button.java +++ b/src/main/java/com/minelittlepony/common/client/gui/element/Button.java @@ -185,9 +185,22 @@ public boolean isMouseOver(double mouseX, double mouseY) { } @Override - public void renderButton(DrawContext context, int mouseX, int mouseY, float partialTicks) { - MinecraftClient mc = MinecraftClient.getInstance(); + public void render(DrawContext context, int mouseX, int mouseY, float tickDelta) { + if (!visible) { + return; + } + getStyle().getTooltip().ifPresentOrElse(tooltip -> { + if (tooltip != prevTooltip) { + prevTooltip = tooltip; + setTooltip(tooltip.toTooltip()); + } + }, () -> setTooltip(null)); + super.render(context, mouseX, mouseY, tickDelta); + } + @Override + public void renderButton(DrawContext context, int mouseX, int mouseY, float tickDelta) { + MinecraftClient mc = MinecraftClient.getInstance(); RenderSystem.setShader(GameRenderer::getPositionTexProgram); RenderSystem.setShaderColor(1, 1, 1, alpha); RenderSystem.enableBlend(); @@ -196,10 +209,10 @@ public void renderButton(DrawContext context, int mouseX, int mouseY, float part GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA); - int state = getTextureY(); - - renderButtonBlit(context, getX(), getY(), state, getWidth(), height); + renderButtonBlit(context, getX(), getY(), getTextureY(), getWidth(), height); renderBackground(context, mc, mouseX, mouseY); + setMessage(getStyle().getText()); + drawIcon(context, mouseX, mouseY, tickDelta); int foreColor = getStyle().getColor(); if (!active) { @@ -207,18 +220,7 @@ public void renderButton(DrawContext context, int mouseX, int mouseY, float part } else if (isHovered()) { foreColor = 16777120; } - - setMessage(getStyle().getText()); - drawIcon(context, mouseX, mouseY, partialTicks); renderForground(context, mc, mouseX, mouseY, foreColor | MathHelper.ceil(alpha * 255F) << 24); - - getStyle().getTooltip().ifPresentOrElse(tooltip -> { - if (tooltip != prevTooltip) { - prevTooltip = tooltip; - setTooltip(tooltip.toTooltip()); - this.getTooltipPositioner(); - } - }, () -> setTooltip(null)); } @Override