diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java index 01cf3cec85..34b7715491 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java @@ -213,29 +213,7 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener for (Overlay overlay : overlays) { - OverlayPosition overlayPosition = overlay.getPosition(); - - if (overlay.getPreferredPosition() != null) - { - overlayPosition = overlay.getPreferredPosition(); - } - - if (!isResizeable) - { - // On fixed mode, ABOVE_CHATBOX_RIGHT is in the same location as - // BOTTOM_RIGHT and CANVAS_TOP_RIGHT is same as TOP_RIGHT. - // Just use BOTTOM_RIGHT and TOP_RIGHT to prevent overlays from - // drawing over each other. - switch (overlayPosition) - { - case CANVAS_TOP_RIGHT: - overlayPosition = OverlayPosition.TOP_RIGHT; - break; - case ABOVE_CHATBOX_RIGHT: - overlayPosition = OverlayPosition.BOTTOM_RIGHT; - break; - } - } + final OverlayPosition overlayPosition = getCorrectedOverlayPosition(overlay); if (overlayPosition == OverlayPosition.DYNAMIC || overlayPosition == OverlayPosition.TOOLTIP) { @@ -333,6 +311,13 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener { for (Overlay overlay : overlayManager.getOverlays()) { + final OverlayPosition overlayPosition = getCorrectedOverlayPosition(overlay); + + if (overlayPosition == OverlayPosition.DYNAMIC || overlayPosition == OverlayPosition.TOOLTIP) + { + continue; + } + if (overlay.getBounds().contains(mousePoint)) { if (SwingUtilities.isRightMouseButton(mouseEvent)) @@ -512,6 +497,35 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener overlay.getBounds().setSize(dimension); } + private OverlayPosition getCorrectedOverlayPosition(final Overlay overlay) + { + OverlayPosition overlayPosition = overlay.getPosition(); + + if (overlay.getPreferredPosition() != null) + { + overlayPosition = overlay.getPreferredPosition(); + } + + if (!isResizeable) + { + // On fixed mode, ABOVE_CHATBOX_RIGHT is in the same location as + // BOTTOM_RIGHT and CANVAS_TOP_RIGHT is same as TOP_RIGHT. + // Just use BOTTOM_RIGHT and TOP_RIGHT to prevent overlays from + // drawing over each other. + switch (overlayPosition) + { + case CANVAS_TOP_RIGHT: + overlayPosition = OverlayPosition.TOP_RIGHT; + break; + case ABOVE_CHATBOX_RIGHT: + overlayPosition = OverlayPosition.BOTTOM_RIGHT; + break; + } + } + + return overlayPosition; + } + private boolean shouldInvalidateBounds() { final Widget chatbox = client.getWidget(WidgetInfo.CHATBOX);