diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-11-07 21:51:17 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-11-07 21:55:46 +0800 |
| commit | 85a0ae5badcdb94e8ea092f3feecfa631df47f3c (patch) | |
| tree | 5249bdbbd843fdf77a001464239a46d0cd4f0daf /runtime-frontend | |
| parent | 7f85089abba4c9500365b694abda364446ab9b3c (diff) | |
| parent | 41180dd40ac5214da245cfa7956dc662c4d95bea (diff) | |
| download | RoughlyEnoughItems-85a0ae5badcdb94e8ea092f3feecfa631df47f3c.tar.gz RoughlyEnoughItems-85a0ae5badcdb94e8ea092f3feecfa631df47f3c.tar.bz2 RoughlyEnoughItems-85a0ae5badcdb94e8ea092f3feecfa631df47f3c.zip | |
Merge commit '41180dd40ac5214da245cfa7956dc662c4d95bea' into modularity
Diffstat (limited to 'runtime-frontend')
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; } |
