From 695f9ed83e4a31ded62d3762f6c21ee3393a010b Mon Sep 17 00:00:00 2001 From: NichtStudioCode <51272202+NichtStudioCode@users.noreply.github.com> Date: Sat, 6 May 2023 16:52:07 +0200 Subject: [PATCH] Fix line and page out of bounds after content update --- .../java/xyz/xenondevs/invui/gui/AbstractPagedGui.java | 7 +++++++ .../java/xyz/xenondevs/invui/gui/AbstractScrollGui.java | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/invui-core/src/main/java/xyz/xenondevs/invui/gui/AbstractPagedGui.java b/invui-core/src/main/java/xyz/xenondevs/invui/gui/AbstractPagedGui.java index 6214bae..e72d3ba 100644 --- a/invui-core/src/main/java/xyz/xenondevs/invui/gui/AbstractPagedGui.java +++ b/invui-core/src/main/java/xyz/xenondevs/invui/gui/AbstractPagedGui.java @@ -70,6 +70,12 @@ public abstract class AbstractPagedGui extends AbstractGui implements PagedGu return Math.max(0, Math.min(page, getPageAmount() - 1)); } + private void correctCurrentPage() { + int correctedPage = correctPage(currentPage); + if (correctedPage != currentPage) + setPage(correctedPage); + } + @Override public boolean hasNextPage() { return currentPage < getPageAmount() - 1 || infinitePages; @@ -81,6 +87,7 @@ public abstract class AbstractPagedGui extends AbstractGui implements PagedGu } protected void update() { + correctCurrentPage(); updateControlItems(); updatePageContent(); } diff --git a/invui-core/src/main/java/xyz/xenondevs/invui/gui/AbstractScrollGui.java b/invui-core/src/main/java/xyz/xenondevs/invui/gui/AbstractScrollGui.java index f506b08..acb431b 100644 --- a/invui-core/src/main/java/xyz/xenondevs/invui/gui/AbstractScrollGui.java +++ b/invui-core/src/main/java/xyz/xenondevs/invui/gui/AbstractScrollGui.java @@ -80,6 +80,12 @@ public abstract class AbstractScrollGui extends AbstractGui implements Scroll return Math.max(0, Math.min(line, getMaxLine())); } + private void correctCurrentLine() { + int correctedLine = correctLine(currentLine); + if (correctedLine != currentLine) + setCurrentLine(correctedLine); + } + @Override public boolean canScroll(int lines) { if (lines == 0 || (infiniteLines && lines > 0) || (lines < 0 && getCurrentLine() > 0)) return true; @@ -104,6 +110,7 @@ public abstract class AbstractScrollGui extends AbstractGui implements Scroll } protected void update() { + correctCurrentLine(); updateControlItems(); updateContent(); }