From 22f6e7c7a09fc83949c8c8f6be4a39127c61606e Mon Sep 17 00:00:00 2001 From: melontini <104443436+melontini@users.noreply.github.com> Date: Fri, 20 Dec 2024 16:18:35 +0700 Subject: [PATCH] This is a bit of a hack, but it works. --- .../impl/widgets/tab/TabNavigationWidget.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/me/melontini/flightpanel/impl/widgets/tab/TabNavigationWidget.java b/src/main/java/me/melontini/flightpanel/impl/widgets/tab/TabNavigationWidget.java index ef8cd36..d2894a6 100644 --- a/src/main/java/me/melontini/flightpanel/impl/widgets/tab/TabNavigationWidget.java +++ b/src/main/java/me/melontini/flightpanel/impl/widgets/tab/TabNavigationWidget.java @@ -21,6 +21,8 @@ import org.jetbrains.annotations.Nullable; public class TabNavigationWidget extends AbstractParentElement implements Drawable, Element, Selectable, TabButtonWidget.MousePosChecker { + private static final ThreadLocal MOUSE_LOCK = ThreadLocal.withInitial(() -> false); + private static final Text USAGE_NARRATION_TEXT = Text.translatable("narration.tab_navigation.usage"); private final GridWidget grid; @@ -72,6 +74,7 @@ public class TabNavigationWidget extends AbstractParentElement super.setFocused(focused); if (focused instanceof TabButtonWidget tabButtonWidget) { this.tabManager.setCurrentTab(tabButtonWidget.getTab(), true); + if (MOUSE_LOCK.get()) return; int scroll = (tabButtonWidget.getX() + (tabButtonWidget.getWidth() / 2)) - this.grid.getX(); @@ -95,7 +98,12 @@ public class TabNavigationWidget extends AbstractParentElement @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { if (!this.isTabAreaHovered(mouseX, mouseY)) return false; - return super.mouseClicked(mouseX, mouseY, button); + try { + MOUSE_LOCK.set(Boolean.TRUE); + return super.mouseClicked(mouseX, mouseY, button); + } finally { + MOUSE_LOCK.remove(); + } } @Override -- 2.51.2