aboutsummaryrefslogtreecommitdiff
path: root/src/client/java/dev/isxander/yacl/gui
diff options
context:
space:
mode:
authorisXander <xandersmith2008@gmail.com>2022-12-20 20:07:04 +0000
committerisXander <xandersmith2008@gmail.com>2022-12-20 20:07:04 +0000
commit751a409c0adaae2763d9986ccb14cc343684720f (patch)
treeee07f36b332d14263fe2d6ed7cae55506bc144e4 /src/client/java/dev/isxander/yacl/gui
parent16e781c4bee6c68c0c3e2d485b57daa0f589101e (diff)
downloadYetAnotherConfigLib-751a409c0adaae2763d9986ccb14cc343684720f.tar.gz
YetAnotherConfigLib-751a409c0adaae2763d9986ccb14cc343684720f.tar.bz2
YetAnotherConfigLib-751a409c0adaae2763d9986ccb14cc343684720f.zip
fix category buttons sometimes not being registered as clicked
Diffstat (limited to 'src/client/java/dev/isxander/yacl/gui')
-rw-r--r--src/client/java/dev/isxander/yacl/gui/ElementListWidgetExt.java40
1 files changed, 20 insertions, 20 deletions
diff --git a/src/client/java/dev/isxander/yacl/gui/ElementListWidgetExt.java b/src/client/java/dev/isxander/yacl/gui/ElementListWidgetExt.java
index f2a19f2..708c6bf 100644
--- a/src/client/java/dev/isxander/yacl/gui/ElementListWidgetExt.java
+++ b/src/client/java/dev/isxander/yacl/gui/ElementListWidgetExt.java
@@ -73,33 +73,33 @@ public class ElementListWidgetExt<E extends ElementListWidgetExt.Entry<E>> exten
}
}
- /*
- below code is licensed from cloth-config under LGPL3
- modified to inherit vanilla's EntryListWidget and use yarn mappings
-
- code is responsible for having dynamic item heights
- */
-
@Nullable
@Override
protected E getEntryAtPosition(double x, double y) {
- int listMiddleX = this.left + this.width / 2;
- int minX = listMiddleX - this.getRowWidth() / 2;
- int maxX = listMiddleX + this.getRowWidth() / 2;
- int currentY = MathHelper.floor(y - (double) this.top) - this.headerHeight + (int) this.getScrollAmount() - 4;
- int itemY = 0;
- int itemIndex = -1;
- for (int i = 0; i < children().size(); i++) {
- E item = children().get(i);
- itemY += item.getItemHeight();
- if (itemY > currentY) {
- itemIndex = i;
- break;
+ y += getScrollAmount();
+
+ if (x < this.left || x > this.right)
+ return null;
+
+ int currentY = this.top - headerHeight + 4;
+ for (E entry : children()) {
+ if (y >= currentY && y <= currentY + entry.getItemHeight()) {
+ return entry;
}
+
+ currentY += entry.getItemHeight();
}
- return x < (double) this.getScrollbarPositionX() && x >= minX && y <= maxX && itemIndex >= 0 && currentY >= 0 && itemIndex < this.getEntryCount() ? this.children().get(itemIndex) : null;
+
+ return null;
}
+ /*
+ below code is licensed from cloth-config under LGPL3
+ modified to inherit vanilla's EntryListWidget and use yarn mappings
+
+ code is responsible for having dynamic item heights
+ */
+
@Override
protected int getMaxPosition() {
return children().stream().map(E::getItemHeight).reduce(0, Integer::sum) + headerHeight;