aboutsummaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-06-20 23:18:08 +0800
committershedaniel <daniel@shedaniel.me>2022-06-28 03:21:12 +0800
commitd11cfc356d9d6f2f302169b9b51b4f7003e7bd24 (patch)
tree47119824cd5e1025536528729e4f75367366395e /runtime
parente74f161c7e9a715779eac432c9cf72fc23173a0b (diff)
downloadRoughlyEnoughItems-d11cfc356d9d6f2f302169b9b51b4f7003e7bd24.tar.gz
RoughlyEnoughItems-d11cfc356d9d6f2f302169b9b51b4f7003e7bd24.tar.bz2
RoughlyEnoughItems-d11cfc356d9d6f2f302169b9b51b4f7003e7bd24.zip
Add dragging from within display history
Diffstat (limited to 'runtime')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayEntry.java8
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryWidget.java14
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