diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/WWidget.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/WWidget.java index b771a5b764..a0aae7c300 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/WWidget.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/WWidget.java @@ -8,6 +8,7 @@ import meteordevelopment.meteorclient.gui.GuiTheme; import meteordevelopment.meteorclient.gui.renderer.GuiRenderer; import meteordevelopment.meteorclient.gui.utils.BaseWidget; +import meteordevelopment.meteorclient.gui.widgets.containers.WView; import net.minecraft.client.gui.Click; import net.minecraft.client.input.CharInput; import net.minecraft.client.input.KeyInput; @@ -77,7 +78,11 @@ public boolean render(GuiRenderer renderer, double mouseX, double mouseY, double if (isOver(mouseX, mouseY)) { mouseOverTimer += delta; - if ((instantTooltips || mouseOverTimer >= 1) && tooltip != null) renderer.tooltip(tooltip); + + if ((instantTooltips || mouseOverTimer >= 1) && tooltip != null) { + WView view = getView(); + if (view == null || view.mouseOver) renderer.tooltip(tooltip); + } } else { mouseOverTimer = 0; @@ -138,6 +143,10 @@ protected WWidget getRoot() { return parent != null ? parent.getRoot() : (this instanceof WRoot ? this : null); } + protected WView getView() { + return this instanceof WView ? (WView) this : (parent != null ? parent.getView() : null); + } + public boolean isOver(double x, double y) { return x >= this.x && x <= this.x + width && y >= this.y && y <= this.y + height; } diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WContainer.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WContainer.java index e124dc2096..632d76cb30 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WContainer.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WContainer.java @@ -106,9 +106,12 @@ protected void onCalculateWidgetPositions() { public boolean render(GuiRenderer renderer, double mouseX, double mouseY, double delta) { if (super.render(renderer, mouseX, mouseY, delta)) return true; + WView view = getView(); + for (Cell cell : cells) { double y = cell.widget().y; if (y > getWindowHeight()) break; + if (view != null && !view.isWidgetInView(cell.widget())) continue; if (y + cell.widget().height > 0) renderWidget(cell.widget(), renderer, mouseX, mouseY, delta); } diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WView.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WView.java index f1c2a650dc..e6acf80130 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WView.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WView.java @@ -164,7 +164,11 @@ else if (targetScroll < scroll) { @Override protected boolean propagateEvents(WWidget widget) { - return ((widget.y >= y && widget.y <= y + height) || (widget.y + widget.height >= y && widget.y + widget.height <= y + height)) || ((y >= widget.y && y <= widget.y + widget.height) || (y + height >= widget.y && y + height <= widget.y + widget.height)); + return mouseOver && isWidgetInView(widget); + } + + protected boolean isWidgetInView(WWidget widget) { + return widget.y < y + height && widget.y + widget.height > y; } protected double handleWidth() {