From 2d52f6d1b4a0271c27ab8a52b029e7cf732c8341 Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 7 Feb 2022 23:03:09 -0500 Subject: [PATCH] overlay manager: prevent loading dynamic overlay positions The overlay renderer tries to never set these, but they can still be set due to conflicting overlay names or from old configs. --- .../client/ui/overlay/OverlayManager.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayManager.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayManager.java index 31d428ceed..ab333a8bcf 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayManager.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayManager.java @@ -40,6 +40,7 @@ import javax.inject.Singleton; import lombok.AccessLevel; import lombok.Getter; import lombok.Setter; +import lombok.extern.slf4j.Slf4j; import net.runelite.api.widgets.WidgetID; import net.runelite.api.widgets.WidgetItem; import net.runelite.client.config.ConfigGroup; @@ -53,6 +54,7 @@ import net.runelite.client.events.PluginChanged; * Manages state of all game overlays */ @Singleton +@Slf4j public class OverlayManager { public static final String OPTION_CONFIGURE = "Configure"; @@ -317,7 +319,18 @@ public class OverlayManager final Dimension size = loadOverlaySize(overlay); overlay.setPreferredSize(size); final OverlayPosition position = loadOverlayPosition(overlay); - overlay.setPreferredPosition(position); + if (position != null) + { + if (overlay.getPosition() != OverlayPosition.DYNAMIC && overlay.getPosition() != OverlayPosition.TOOLTIP) + { + overlay.setPreferredPosition(position); + } + else + { + log.info("Resetting preferred position of dynamic overlay {}", overlay.getClass().getSimpleName()); + saveOverlayPosition(overlay); + } + } } private void updateOverlayConfig(final Overlay overlay)