Fix line and page out of bounds after content update

This commit is contained in:
NichtStudioCode 2023-05-06 16:52:07 +02:00
parent fee76b5689
commit 695f9ed83e
2 changed files with 14 additions and 0 deletions

@ -70,6 +70,12 @@ public abstract class AbstractPagedGui<C> 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<C> extends AbstractGui implements PagedGu
}
protected void update() {
correctCurrentPage();
updateControlItems();
updatePageContent();
}

@ -80,6 +80,12 @@ public abstract class AbstractScrollGui<C> 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<C> extends AbstractGui implements Scroll
}
protected void update() {
correctCurrentLine();
updateControlItems();
updateContent();
}