diff options
| author | shedaniel <daniel@shedaniel.me> | 2023-11-09 17:22:25 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2024-04-16 00:38:18 +0900 |
| commit | a86cf39ca5de718ea615390d6e65fe3d594494f8 (patch) | |
| tree | b15625e956a267528bafe21cd88f167bc6cf8d2c | |
| parent | d35588ecbdae04bb097958519f233948310daf52 (diff) | |
| download | RoughlyEnoughItems-a86cf39ca5de718ea615390d6e65fe3d594494f8.tar.gz RoughlyEnoughItems-a86cf39ca5de718ea615390d6e65fe3d594494f8.tar.bz2 RoughlyEnoughItems-a86cf39ca5de718ea615390d6e65fe3d594494f8.zip | |
Return to the first page of the collapsed group
3 files changed, 18 insertions, 4 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/CollapsingEntryListWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/CollapsingEntryListWidget.java index 79729c036..c4094c069 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/CollapsingEntryListWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/CollapsingEntryListWidget.java @@ -67,7 +67,7 @@ public abstract class CollapsingEntryListWidget extends EntryListWidget { super.updateEntriesPosition(); } - private void updateStacks() { + public void updateStacks() { lastUpdatedCount = updatedCount; List</*EntryStack<?> | List<EntryStack<?>>*/ Object> stacks = new ArrayList<>((int) (collapsedStacks.size() * 1.5)); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListStackEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListStackEntry.java index 729dbb834..9d00e85cb 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListStackEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListStackEntry.java @@ -163,6 +163,21 @@ public class EntryListStackEntry extends DisplayedEntryWidget { if (collapsedStack != null && button == 0 && Screen.hasAltDown()) { parent.updatedCount++; collapsedStack.setExpanded(!collapsedStack.isExpanded()); + parent.updateStacks(); + + if (!collapsedStack.isExpanded() && parent instanceof PaginatedEntryListWidget paginatedList) { + List<Object> stacks = parent.getStacks(); + + for (int i = 0; i < stacks.size(); i++) { + CollapsedStack stack = parent.getCollapsedStackIndexed().get(i); + + if (stack == collapsedStack) { + paginatedList.setPage(Mth.clamp(i / paginatedList.getEntryWidgets().size(), 0, paginatedList.getTotalPages() - 1)); + break; + } + } + } + parent.updateEntriesPosition(); Widgets.produceClickSound(); return true; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/PaginatedEntryListWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/PaginatedEntryListWidget.java index b1852766f..9e54d023c 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/PaginatedEntryListWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/PaginatedEntryListWidget.java @@ -135,12 +135,11 @@ public class PaginatedEntryListWidget extends CollapsingEntryListWidget { } page = Math.max(Math.min(page, getTotalPages() - 1), 0); int skip = Math.max(0, page * entries.size()); - List</*EntryStack<?> | List<EntryStack<?>>*/ Object> subList = stacks.stream().skip(skip).limit(Math.max(0, entries.size() - Math.max(0, -page * entries.size()))).toList(); + List</*EntryStack<?> | List<EntryStack<?>>*/ Object> subList = stacks.subList(skip, Math.min(stacks.size(), skip + entries.size())); Int2ObjectMap<CollapsedStack> indexedCollapsedStack = getCollapsedStackIndexed(); Set<CollapsedStack> collapsedStacks = new LinkedHashSet<>(); for (int i = 0; i < subList.size(); i++) { - /*EntryStack<?> | List<EntryStack<?>>*/ - Object stack = subList.get(i); + /*EntryStack<?> | List<EntryStack<?>>*/ Object stack = subList.get(i); EntryListStackEntry entry = entries.get(i + Math.max(0, -page * entries.size())); entry.clearStacks(); |
