aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2023-11-09 17:22:25 +0800
committershedaniel <daniel@shedaniel.me>2024-04-16 00:38:18 +0900
commita86cf39ca5de718ea615390d6e65fe3d594494f8 (patch)
treeb15625e956a267528bafe21cd88f167bc6cf8d2c
parentd35588ecbdae04bb097958519f233948310daf52 (diff)
downloadRoughlyEnoughItems-a86cf39ca5de718ea615390d6e65fe3d594494f8.tar.gz
RoughlyEnoughItems-a86cf39ca5de718ea615390d6e65fe3d594494f8.tar.bz2
RoughlyEnoughItems-a86cf39ca5de718ea615390d6e65fe3d594494f8.zip
Return to the first page of the collapsed group
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/CollapsingEntryListWidget.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListStackEntry.java15
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/PaginatedEntryListWidget.java5
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();