diff options
Diffstat (limited to 'runtime/src/main/java')
2 files changed, 15 insertions, 7 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayEntry.java index 256d6b6de..4420cf278 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayEntry.java @@ -284,19 +284,19 @@ public class DisplayEntry extends WidgetWithBounds { return (float) bounds.height / size.height; } - private int transformMouseX(int mouseX) { + protected int transformMouseX(int mouseX) { return Math.round((mouseX - xOffset()) / xScale()); } - private int transformMouseY(int mouseY) { + protected int transformMouseY(int mouseY) { return Math.round((mouseY - yOffset()) / yScale()); } - private double transformMouseX(double mouseX) { + protected double transformMouseX(double mouseX) { return (mouseX - xOffset()) / xScale(); } - private double transformMouseY(double mouseY) { + protected double transformMouseY(double mouseY) { return (mouseY - yOffset()) / yScale(); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryWidget.java index 9450fbe39..ba5b470f0 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryWidget.java @@ -57,7 +57,7 @@ import java.util.Collections; import java.util.List; @SuppressWarnings("UnstableApiUsage") -public class DisplayHistoryWidget extends WidgetWithBounds implements DraggableComponentVisitorWidget, DraggableComponentProviderWidget<Display> { +public class DisplayHistoryWidget extends WidgetWithBounds implements DraggableComponentVisitorWidget, DraggableComponentProviderWidget<Object> { private final FavoritesListWidget parent; private final Rectangle bounds = new Rectangle(); private final NumberAnimator<Double> height; @@ -365,14 +365,22 @@ public class DisplayHistoryWidget extends WidgetWithBounds implements DraggableC @Override @Nullable - public DraggableComponent<Display> getHovered(DraggingContext<Screen> context, double mouseX, double mouseY) { + public DraggableComponent<Object> getHovered(DraggingContext<Screen> context, double mouseX, double mouseY) { if (containsMouse(mouseX, mouseY)) { double xOffset = -this.scroll.value(); Collection<DisplayEntry> entries = DisplayHistoryManager.INSTANCE.getEntries(this); for (DisplayEntry entry : entries) { if (entry.isStable() && entry.getBounds().contains(mouseX + xOffset, mouseY)) { - return new DisplayCompositeWidget.DisplayDraggableComponent(Widgets.concat(entry.getWidgets()), entry.getDisplay(), + for (DraggableComponentProviderWidget<Object> widget : Widgets.<DraggableComponentProviderWidget<Object>>walk(entry.getWidgets(), child -> child instanceof DraggableComponentProviderWidget)) { + DraggableComponent<Object> hovered = widget.getHovered(context, entry.transformMouseX(mouseX), entry.transformMouseY(mouseY)); + + if (hovered != null) { + return hovered; + } + } + + return (DraggableComponent<Object>) (DraggableComponent<?>) new DisplayCompositeWidget.DisplayDraggableComponent(Widgets.concat(entry.getWidgets()), entry.getDisplay(), entry.getBounds().clone(), new Rectangle(0, 0, entry.getSize().width, entry.getSize().height)) { @Override |
