From 2d1bfbf5902dfe5db8bf95d01ae5b4d68e48020f Mon Sep 17 00:00:00 2001 From: shedaniel Date: Mon, 27 Jun 2022 23:27:37 +0800 Subject: Add expanded view to tag trees, fix #948 --- .../me/shedaniel/rei/api/client/REIRuntime.java | 10 ++++++++++ .../rei/api/client/gui/widgets/DelegateWidget.java | 9 ++++++--- .../rei/api/client/gui/widgets/Widget.java | 8 +++++--- .../rei/api/client/gui/widgets/Widgets.java | 23 ++++++++++++++++++++++ 4 files changed, 44 insertions(+), 6 deletions(-) (limited to 'api/src/main/java/me/shedaniel') diff --git a/api/src/main/java/me/shedaniel/rei/api/client/REIRuntime.java b/api/src/main/java/me/shedaniel/rei/api/client/REIRuntime.java index 8c3d68d4f..a17751703 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/REIRuntime.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/REIRuntime.java @@ -37,6 +37,7 @@ import net.fabricmc.api.Environment; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; import java.util.Optional; @@ -143,6 +144,15 @@ public interface REIRuntime extends Reloadable { */ void queueTooltip(@Nullable Tooltip tooltip); + /** + * Clear all queued tooltips. + * + * @see Tooltip#queue() + * @since 8.3 + */ + @ApiStatus.Experimental + void clearTooltips(); + /** * Returns the texture location of the default display background. *

diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/DelegateWidget.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/DelegateWidget.java index 1bf43694b..e4ff00b7b 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/DelegateWidget.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/DelegateWidget.java @@ -34,11 +34,9 @@ import java.util.List; public class DelegateWidget extends WidgetWithBounds { private static final Rectangle EMPTY = new Rectangle(); protected final Widget widget; - private final List children; public DelegateWidget(Widget widget) { this.widget = widget; - this.children = Collections.singletonList(widget); } protected Widget delegate() { @@ -52,7 +50,7 @@ public class DelegateWidget extends WidgetWithBounds { @Override public List children() { - return children; + return Collections.singletonList(delegate()); } @Override @@ -126,4 +124,9 @@ public class DelegateWidget extends WidgetWithBounds { this.setDragging(false); return delegate().mouseReleased(mouseX, mouseY, button); } + + @Override + public double getZRenderingPriority() { + return delegate().getZRenderingPriority(); + } } diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java index df350c9c7..16ef576ee 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java @@ -37,10 +37,7 @@ import net.fabricmc.api.Environment; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import org.jetbrains.annotations.ApiStatus; -import org.jetbrains.annotations.Nullable; -import java.io.Closeable; -import java.io.IOException; import java.util.Stack; /** @@ -121,6 +118,11 @@ public abstract class Widget extends AbstractContainerEventHandler implements ne render(matrices, mouseX, mouseY, delta); } + @ApiStatus.Experimental + public double getZRenderingPriority() { + return 0; + } + @ApiStatus.Experimental public static CloseableScissors scissor(PoseStack matrices, Rectangle bounds) { return scissor(matrices.last().pose(), bounds); diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widgets.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widgets.java index eb1f54d7d..028947c34 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widgets.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widgets.java @@ -327,6 +327,29 @@ public final class Widgets { return ClientInternals.getWidgetsProvider().wrapPadded(padLeft, padRight, padTop, padBottom, widget); } + public static Widget delegate(Supplier supplier) { + return new DelegateWidget(Widgets.noOp()) { + @Override + protected Widget delegate() { + return supplier.get(); + } + }; + } + + public static WidgetWithBounds delegateWithBounds(Supplier supplier) { + return new DelegateWidgetWithBounds(Widgets.noOp(), Rectangle::new) { + @Override + protected WidgetWithBounds delegate() { + return supplier.get(); + } + + @Override + public Rectangle getBounds() { + return delegate().getBounds(); + } + }; + } + public static Iterable walk(Iterable listeners, Predicate predicate) { return () -> new AbstractIterator() { Stack> stack; -- cgit