From d11cfc356d9d6f2f302169b9b51b4f7003e7bd24 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Mon, 20 Jun 2022 23:18:08 +0800 Subject: Add dragging from within display history --- .../client/gui/widget/favorites/history/DisplayEntry.java | 8 ++++---- .../gui/widget/favorites/history/DisplayHistoryWidget.java | 14 +++++++++++--- 2 files changed, 15 insertions(+), 7 deletions(-) (limited to 'runtime/src/main/java') 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 { +public class DisplayHistoryWidget extends WidgetWithBounds implements DraggableComponentVisitorWidget, DraggableComponentProviderWidget { private final FavoritesListWidget parent; private final Rectangle bounds = new Rectangle(); private final NumberAnimator height; @@ -365,14 +365,22 @@ public class DisplayHistoryWidget extends WidgetWithBounds implements DraggableC @Override @Nullable - public DraggableComponent getHovered(DraggingContext context, double mouseX, double mouseY) { + public DraggableComponent getHovered(DraggingContext context, double mouseX, double mouseY) { if (containsMouse(mouseX, mouseY)) { double xOffset = -this.scroll.value(); Collection 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 widget : Widgets.>walk(entry.getWidgets(), child -> child instanceof DraggableComponentProviderWidget)) { + DraggableComponent hovered = widget.getHovered(context, entry.transformMouseX(mouseX), entry.transformMouseY(mouseY)); + + if (hovered != null) { + return hovered; + } + } + + return (DraggableComponent) (DraggableComponent) new DisplayCompositeWidget.DisplayDraggableComponent(Widgets.concat(entry.getWidgets()), entry.getDisplay(), entry.getBounds().clone(), new Rectangle(0, 0, entry.getSize().width, entry.getSize().height)) { @Override -- cgit