From d933211cc47ef3c6c370e26763e0ded885f1a0d8 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Thu, 1 Jun 2023 13:55:22 +0800 Subject: Fix #1242 --- .../gui/screen/CompositeDisplayViewingScreen.java | 65 +++++++++++++--------- .../client/gui/widget/basewidgets/PanelWidget.java | 2 +- 2 files changed, 41 insertions(+), 26 deletions(-) (limited to 'runtime/src/main/java/me') diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java index a95d52069..c0e9e2b01 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java @@ -54,10 +54,7 @@ import net.minecraft.util.Mth; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Optional; +import java.util.*; @ApiStatus.Internal public class CompositeDisplayViewingScreen extends AbstractDisplayViewingScreen { @@ -183,7 +180,7 @@ public class CompositeDisplayViewingScreen extends AbstractDisplayViewingScreen ViewSearchBuilder.builder().addAllCategories().open(); }).tooltip(Component.translatable("text.rei.view_all_categories")).noShadow().color(0xFF404040, 0xFFBBBBBB).hoveredColor(0xFF0041FF, 0xFFFFBD4D)); - this.children().addAll(buttonList); + this.widgets.add(new ButtonListWidget(buttonList)); this.children().addAll(widgets); } @@ -270,6 +267,7 @@ public class CompositeDisplayViewingScreen extends AbstractDisplayViewingScreen @Override public void render(PoseStack matrices, int mouseX, int mouseY, float delta) { + this.widgets.sort(Comparator.comparingDouble(Widget::getZRenderingPriority)); if (ConfigObject.getInstance().isCompositeScrollBarPermanent()) { scrollBarAlphaFutureTime = System.currentTimeMillis(); scrollBarAlphaFuture = 0; @@ -294,32 +292,12 @@ public class CompositeDisplayViewingScreen extends AbstractDisplayViewingScreen } scrolling.updatePosition(delta); renderBackground(matrices); - int yOffset = 0; getOverlay().render(matrices, mouseX, mouseY, delta); super.render(matrices, mouseX, mouseY, delta); for (Widget widget : widgets) { RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); widget.render(matrices, mouseX, mouseY, delta); } - matrices.pushPose(); - ScissorsHandler.INSTANCE.scissor(scrolling.getBounds()); - for (Button button : buttonList) { - button.getBounds().y = scrollListBounds.y + 1 + yOffset - scrolling.scrollAmountInt(); - if (button.getBounds().getMaxY() > scrollListBounds.getMinY() && button.getBounds().getMinY() < scrollListBounds.getMaxY()) { - button.render(matrices, mouseX, mouseY, delta); - } - yOffset += button.getBounds().height; - } - for (int i = 0; i < buttonList.size(); i++) { - if (buttonList.get(i).getBounds().getMaxY() > scrollListBounds.getMinY() && buttonList.get(i).getBounds().getMinY() < scrollListBounds.getMaxY()) { - displayRenderers.get(i).setZ(1); - displayRenderers.get(i).render(matrices, buttonList.get(i).getBounds(), mouseX, mouseY, delta); - Optional.ofNullable(displayRenderers.get(i).getTooltip(TooltipContext.of(new Point(mouseX, mouseY)))).ifPresent(Tooltip::queue); - } - } - scrolling.renderScrollBar(0, scrollBarAlpha, REIRuntime.getInstance().isDarkThemeEnabled() ? 0.8f : 1f); - ScissorsHandler.INSTANCE.removeLastScissor(); - matrices.popPose(); } @Override @@ -379,4 +357,41 @@ public class CompositeDisplayViewingScreen extends AbstractDisplayViewingScreen } return super.keyPressed(keyCode, scanCode, modifiers); } + + private class ButtonListWidget extends Widget { + private final List