From 4792e61997bd95bedd494ef1d29dbb45c691efe2 Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 11 Jun 2018 21:27:37 -0400 Subject: [PATCH] overlay renderer: bound overlays position to viewport at render time instead of at config load time Fixes overlays being reset when temporarly off screen during loading. Fixes #3571 --- .../client/ui/overlay/OverlayRenderer.java | 28 ++++++------------- 1 file changed, 9 insertions(+), 19 deletions(-) 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 5f01a21b37..fd3627a274 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 @@ -220,25 +220,10 @@ public class OverlayRenderer extends MouseListener implements KeyListener for (final Overlay overlay : overlays) { final Point location = loadOverlayLocation(overlay); - - if (location != null - && client.getCanvas() != null - && !client.getCanvas().contains(location)) - { - overlay.setPreferredLocation(null); - saveOverlayLocation(overlay); - } - else if (location != null) - { - overlay.setPreferredLocation(location); - } + overlay.setPreferredLocation(location); final Dimension size = loadOverlaySize(overlay); - - if (size != null) - { - overlay.setPreferredSize(size); - } + overlay.setPreferredSize(size); final OverlayPosition position = loadOverlayPosition(overlay); overlay.setPreferredPosition(position); @@ -379,9 +364,14 @@ public class OverlayRenderer extends MouseListener implements KeyListener } else { - if (overlay.getPreferredLocation() != null) + final Point preferredLocation = overlay.getPreferredLocation(); + + if (preferredLocation != null) { - location.setLocation(overlay.getPreferredLocation()); + final Dimension realDimensions = client.getRealDimensions(); + final int x = Math.min(realDimensions.width - 5, preferredLocation.x); + final int y = Math.min(realDimensions.height - 5, preferredLocation.y); + location.setLocation(x, y); } }