From 85479a15cab789661cb3b5f80515c7c51ac0f31a Mon Sep 17 00:00:00 2001 From: ZZZank <47418975+ZZZank@users.noreply.github.com> Date: Tue, 14 Jul 2026 16:13:58 +0800 Subject: [PATCH 1/4] add exclusion area check to `LeftAreaDispatcher` --- .../jei/gui/overlay/bookmarks/LeftAreaDispatcher.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/mezz/jei/gui/overlay/bookmarks/LeftAreaDispatcher.java b/src/main/java/mezz/jei/gui/overlay/bookmarks/LeftAreaDispatcher.java index 648b366c..123f2387 100644 --- a/src/main/java/mezz/jei/gui/overlay/bookmarks/LeftAreaDispatcher.java +++ b/src/main/java/mezz/jei/gui/overlay/bookmarks/LeftAreaDispatcher.java @@ -123,8 +123,12 @@ public boolean canSetFocusWithMouse() { return false; } + public boolean isMouseOver(int mouseX, int mouseY) { + return canShow && hasContent() && !guiScreenHelper.isInGuiExclusionArea(mouseX, mouseY); + } + public boolean handleMouseScrolled(int mouseX, int mouseY, int dWheel) { - if (canShow && hasContent()) { + if (isMouseOver(mouseX, mouseY)) { if (displayArea.contains(mouseX, mouseY)) { return contents.get(current).handleMouseScrolled(mouseX, mouseY, dWheel); } else if (naviArea.contains(mouseX, mouseY)) { @@ -140,7 +144,7 @@ public boolean handleMouseScrolled(int mouseX, int mouseY, int dWheel) { } public boolean handleMouseClicked(int mouseX, int mouseY, int mouseButton) { - if (canShow && hasContent()) { + if (isMouseOver(mouseX, mouseY)) { if (displayArea.contains(mouseX, mouseY)) { return contents.get(current).handleMouseClicked(mouseX, mouseY, mouseButton); } else if (naviArea.contains(mouseX, mouseY)) { @@ -151,7 +155,7 @@ public boolean handleMouseClicked(int mouseX, int mouseY, int mouseButton) { } public boolean handleMouseReleased(int mouseX, int mouseY, int mouseButton) { - if (!(canShow || hasContent())) { + if (!isMouseOver(mouseX, mouseY)) { return false; } From 0fe4102f32dfcf08b6d365467e0c277ca4ddd498 Mon Sep 17 00:00:00 2001 From: ZZZank <47418975+ZZZank@users.noreply.github.com> Date: Tue, 14 Jul 2026 16:14:11 +0800 Subject: [PATCH 2/4] add exclusion area check to `IngredientListOverlay` --- .../mezz/jei/gui/overlay/IngredientListOverlay.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/mezz/jei/gui/overlay/IngredientListOverlay.java b/src/main/java/mezz/jei/gui/overlay/IngredientListOverlay.java index 2621764a..1124a047 100644 --- a/src/main/java/mezz/jei/gui/overlay/IngredientListOverlay.java +++ b/src/main/java/mezz/jei/gui/overlay/IngredientListOverlay.java @@ -220,15 +220,19 @@ public void handleTick() { @Override public boolean isMouseOver(int mouseX, int mouseY) { + boolean result; if (isListDisplayed()) { if (Config.isCenterSearchBarEnabled() && searchField.isMouseOver(mouseX, mouseY)) { - return true; + result = true; + } else { + result = displayArea.contains(mouseX, mouseY); } - return displayArea.contains(mouseX, mouseY); } else if (this.guiProperties != null) { - return this.configButton.isMouseOver(mouseX, mouseY); + result = this.configButton.isMouseOver(mouseX, mouseY); + } else { + result = false; } - return false; + return result && !guiScreenHelper.isInGuiExclusionArea(mouseX, mouseY); } @Override From 54767bbdbd59e4e6cd182c2d8d004f4f1b27279a Mon Sep 17 00:00:00 2001 From: ZZZank <47418975+ZZZank@users.noreply.github.com> Date: Tue, 14 Jul 2026 16:14:31 +0800 Subject: [PATCH 3/4] skip scroll handler if mouse is not over it --- src/main/java/mezz/jei/input/InputHandler.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/mezz/jei/input/InputHandler.java b/src/main/java/mezz/jei/input/InputHandler.java index 85a0964c..341e591b 100644 --- a/src/main/java/mezz/jei/input/InputHandler.java +++ b/src/main/java/mezz/jei/input/InputHandler.java @@ -153,7 +153,15 @@ private boolean handleMouseRelease(GuiScreen guiScreen, int mouseX, int mouseY) } private boolean handleMouseScroll(int dWheel, int mouseX, int mouseY) { - return ingredientListOverlay.handleMouseScrolled(mouseX, mouseY, dWheel) || leftAreaDispatcher.handleMouseScrolled(mouseX, mouseY, dWheel); + if (ingredientListOverlay.isMouseOver(mouseX, mouseY) && ingredientListOverlay.handleMouseScrolled(mouseX, mouseY, dWheel)) { + return true; + } + + if (leftAreaDispatcher.isMouseOver(mouseX, mouseY) && leftAreaDispatcher.handleMouseScrolled(mouseX, mouseY, dWheel)) { + return true; + } + + return false; } private boolean handleMouseClick(GuiScreen guiScreen, int mouseButton, int mouseX, int mouseY) { From 7a55e9f4a43fa77b48e1304b8c236ccbac50d6a2 Mon Sep 17 00:00:00 2001 From: ZZZank <47418975+ZZZank@users.noreply.github.com> Date: Fri, 17 Jul 2026 16:33:53 +0800 Subject: [PATCH 4/4] extract exclusion area check --- .../jei/gui/overlay/IngredientListOverlay.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/main/java/mezz/jei/gui/overlay/IngredientListOverlay.java b/src/main/java/mezz/jei/gui/overlay/IngredientListOverlay.java index 1124a047..040d47db 100644 --- a/src/main/java/mezz/jei/gui/overlay/IngredientListOverlay.java +++ b/src/main/java/mezz/jei/gui/overlay/IngredientListOverlay.java @@ -220,19 +220,18 @@ public void handleTick() { @Override public boolean isMouseOver(int mouseX, int mouseY) { - boolean result; + if (guiScreenHelper.isInGuiExclusionArea(mouseX, mouseY)) { + return false; + } if (isListDisplayed()) { if (Config.isCenterSearchBarEnabled() && searchField.isMouseOver(mouseX, mouseY)) { - result = true; - } else { - result = displayArea.contains(mouseX, mouseY); + return true; } + return displayArea.contains(mouseX, mouseY); } else if (this.guiProperties != null) { - result = this.configButton.isMouseOver(mouseX, mouseY); - } else { - result = false; + return this.configButton.isMouseOver(mouseX, mouseY); } - return result && !guiScreenHelper.isInGuiExclusionArea(mouseX, mouseY); + return false; } @Override