diff options
Diffstat (limited to 'src/client/java/dev/isxander/yacl/gui')
-rw-r--r-- | src/client/java/dev/isxander/yacl/gui/ElementListWidgetExt.java | 40 |
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; |