diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-06-20 23:18:08 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-06-28 03:21:12 +0800 |
| commit | d11cfc356d9d6f2f302169b9b51b4f7003e7bd24 (patch) | |
| tree | 47119824cd5e1025536528729e4f75367366395e /runtime | |
| parent | e74f161c7e9a715779eac432c9cf72fc23173a0b (diff) | |
| download | RoughlyEnoughItems-d11cfc356d9d6f2f302169b9b51b4f7003e7bd24.tar.gz RoughlyEnoughItems-d11cfc356d9d6f2f302169b9b51b4f7003e7bd24.tar.bz2 RoughlyEnoughItems-d11cfc356d9d6f2f302169b9b51b4f7003e7bd24.zip | |
Add dragging from within display history
Diffstat (limited to 'runtime')
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 309c93622..f0cb0c0ff 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 |
