aboutsummaryrefslogtreecommitdiff
path: root/runtime-frontend
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-11-07 21:51:17 +0800
committershedaniel <daniel@shedaniel.me>2022-11-07 21:55:46 +0800
commit85a0ae5badcdb94e8ea092f3feecfa631df47f3c (patch)
tree5249bdbbd843fdf77a001464239a46d0cd4f0daf /runtime-frontend
parent7f85089abba4c9500365b694abda364446ab9b3c (diff)
parent41180dd40ac5214da245cfa7956dc662c4d95bea (diff)
downloadRoughlyEnoughItems-85a0ae5badcdb94e8ea092f3feecfa631df47f3c.tar.gz
RoughlyEnoughItems-85a0ae5badcdb94e8ea092f3feecfa631df47f3c.tar.bz2
RoughlyEnoughItems-85a0ae5badcdb94e8ea092f3feecfa631df47f3c.zip
Merge commit '41180dd40ac5214da245cfa7956dc662c4d95bea' into modularity
Diffstat (limited to 'runtime-frontend')
-rw-r--r--runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/EntryListSearchManager.java22
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/dragging/DraggingContextImpl.java4
2 files changed, 20 insertions, 6 deletions
diff --git a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/EntryListSearchManager.java b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/EntryListSearchManager.java
index 2be121ddf..da2ab2eaf 100644
--- a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/EntryListSearchManager.java
+++ b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/EntryListSearchManager.java
@@ -32,7 +32,6 @@ import me.shedaniel.rei.api.client.gui.config.EntryPanelOrdering;
import me.shedaniel.rei.api.client.registry.entry.CollapsibleEntry;
import me.shedaniel.rei.api.client.registry.entry.CollapsibleEntryRegistry;
import me.shedaniel.rei.api.client.registry.entry.EntryRegistry;
-import me.shedaniel.rei.api.client.search.SearchFilter;
import me.shedaniel.rei.api.client.view.Views;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes;
@@ -47,6 +46,7 @@ import org.apache.logging.log4j.Level;
import org.jetbrains.annotations.Nullable;
import java.util.*;
+import java.util.function.BooleanSupplier;
import java.util.function.Consumer;
public class EntryListSearchManager {
@@ -78,12 +78,16 @@ public class EntryListSearchManager {
if (ignoreLastSearch) searchManager.markDirty();
searchManager.updateFilter(searchTerm);
if (searchManager.isDirty()) {
- searchManager.getAsync(list -> {
- List</*EntryStack<?> | CollapsedStack*/ Object> finalList = collapse(copyAndOrder(list));
+ searchManager.getAsync((list, filter) -> {
+ if (!filter.getFilter().equals(searchTerm)) return;
+ if (searchManager.getSearchFilter() == null || searchManager.getSearchFilter() != filter) return;
+ InternalLogger.getInstance().log(ConfigObject.getInstance().doDebugSearchTimeRequired() ? Level.INFO : Level.TRACE, "Search \"%s\" Used [%s]: %s", filter.getFilter(), Thread.currentThread().toString(), stopwatch.toString());
+ List</*EntryStack<?> | CollapsedStack*/ Object> finalList = collapse(copyAndOrder(list), () -> searchManager.getSearchFilter() != null && searchManager.getSearchFilter() == filter);
- InternalLogger.getInstance().log(ConfigObject.getInstance().doDebugSearchTimeRequired() ? Level.INFO : Level.TRACE, "Search Used: %s", stopwatch.stop().toString());
+ InternalLogger.getInstance().log(ConfigObject.getInstance().doDebugSearchTimeRequired() ? Level.INFO : Level.TRACE, "Search \"%s\" Used and Applied [%s]: %s", filter.getFilter(), Thread.currentThread().toString(), stopwatch.stop().toString());
- Minecraft.getInstance().executeBlocking(() -> {
+ Minecraft.getInstance().submit(() -> {
+ if (searchManager.getSearchFilter() == null || searchManager.getSearchFilter() != filter) return;
update.accept(finalList);
});
});
@@ -104,7 +108,7 @@ public class EntryListSearchManager {
return list;
}
- private List</*EntryStack<?> | CollapsedStack*/ Object> collapse(List<EntryStack<?>> stacks) {
+ private List</*EntryStack<?> | CollapsedStack*/ Object> collapse(List<EntryStack<?>> stacks, BooleanSupplier isValid) {
CollapsibleEntryRegistry collapsibleRegistry = CollapsibleEntryRegistry.getInstance();
Map<CollapsibleEntry, @Nullable CollapsedStack> entries = new HashMap<>();
@@ -112,8 +116,12 @@ public class EntryListSearchManager {
entries.put(entry, null);
}
+ if (!isValid.getAsBoolean()) return List.of();
+
List</*EntryStack<?> | CollapsedStack*/ Object> list = new ArrayList<>();
+ int i = 0;
+
for (EntryStack<?> stack : stacks) {
long hashExact = EntryStacks.hashExact(stack);
boolean matchedAny = false;
@@ -138,6 +146,8 @@ public class EntryListSearchManager {
}
}
+ if (i++ % 50 == 0 && !isValid.getAsBoolean()) return List.of();
+
if (!matchedAny) {
list.add(stack);
}
diff --git a/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/dragging/DraggingContextImpl.java b/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/dragging/DraggingContextImpl.java
index e041e4daf..3e579a207 100644
--- a/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/dragging/DraggingContextImpl.java
+++ b/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/dragging/DraggingContextImpl.java
@@ -166,6 +166,10 @@ public class DraggingContextImpl extends Widget implements DraggingContext<Scree
@Override
public boolean mouseReleased(double d, double e, int i) {
+ if (i != 0) {
+ return false;
+ }
+ drop();
return false;
}