From 46e9e930502efb6a460a271a215efa50a908138e Mon Sep 17 00:00:00 2001 From: Jacob Mischka Date: Fri, 23 Oct 2020 12:28:59 -0500 Subject: [PATCH] overlayrenderer: Make minimum overlay size configurable per-overlay (#12611) Halve the minimum for Screen Marker Overlay to "fix" #12267 (set to 16). Any smaller than 16 makes subsequent resizes impossible because the cursor type never changes from center (move mode). --- .../plugins/screenmarkers/ScreenMarkerOverlay.java | 1 + .../java/net/runelite/client/ui/overlay/Overlay.java | 1 + .../runelite/client/ui/overlay/OverlayRenderer.java | 10 +++++----- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ScreenMarkerOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ScreenMarkerOverlay.java index c82ac2aee8..7741eaeffd 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ScreenMarkerOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ScreenMarkerOverlay.java @@ -49,6 +49,7 @@ public class ScreenMarkerOverlay extends Overlay setLayer(OverlayLayer.ALWAYS_ON_TOP); setPriority(OverlayPriority.HIGH); setResizable(true); + setMinimumSize(16); setResettable(false); } diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/Overlay.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/Overlay.java index a440108944..303b423a6a 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/Overlay.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/Overlay.java @@ -51,6 +51,7 @@ public abstract class Overlay implements LayoutableRenderableEntity private OverlayLayer layer = OverlayLayer.UNDER_WIDGETS; private final List menuEntries = new ArrayList<>(); private boolean resizable; + private int minimumSize = 32; private boolean resettable = true; /** 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 7a4d7f08c1..1b886f4ec9 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 @@ -70,7 +70,6 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener private static final int BORDER = 5; private static final int BORDER_TOP = BORDER + 15; private static final int PADDING = 2; - private static final int MIN_OVERLAY_SIZE = 32; private static final int OVERLAY_RESIZE_TOLERANCE = 5; private static final Dimension SNAP_CORNER_SIZE = new Dimension(80, 80); private static final Color SNAP_CORNER_COLOR = new Color(0, 255, 255, 50); @@ -536,8 +535,9 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener // center } - final int widthOverflow = Math.max(0, MIN_OVERLAY_SIZE - width); - final int heightOverflow = Math.max(0, MIN_OVERLAY_SIZE - height); + final int minOverlaySize = currentManagedOverlay.getMinimumSize(); + final int widthOverflow = Math.max(0, minOverlaySize - width); + final int heightOverflow = Math.max(0, minOverlaySize - height); final int dx = x - originalX; final int dy = y - originalY; @@ -545,7 +545,7 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener // dimensions and adjust the x/y position accordingly as needed if (widthOverflow > 0) { - width = MIN_OVERLAY_SIZE; + width = minOverlaySize; if (dx > 0) { @@ -554,7 +554,7 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener } if (heightOverflow > 0) { - height = MIN_OVERLAY_SIZE; + height = minOverlaySize; if (dy > 0) {