From 59bccf2c6f3d6b6f39bf66933b72135dfe019d7c Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 12 Dec 2020 17:25:30 -0500 Subject: [PATCH] overlay renderer: set currentManagedOverlay also when clicking Requiring the mouse to be moved first causes dead clicks when the mouse is pressed immediately after entering overlay management mode. Also since resetOverlayManagementMode() clears the managed overlay, after dragging an overlay it again requires the mouse to be moved to pick up a click on it if dragging again or trying to reset the overlay. --- .../client/ui/overlay/OverlayRenderer.java | 51 +++++++++++-------- 1 file changed, 31 insertions(+), 20 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 1b886f4ec9..d2a4e135a2 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 @@ -344,6 +344,9 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener final Point mousePoint = mouseEvent.getPoint(); mousePosition.setLocation(mousePoint); + // See if we've clicked on an overlay + currentManagedOverlay = findMangedOverlay(mousePoint); + if (currentManagedOverlay == null) { return mouseEvent; @@ -389,26 +392,7 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener if (!inOverlayResizingMode && !inOverlayDraggingMode) { - currentManagedOverlay = null; - - synchronized (overlayManager) - { - for (Overlay overlay : overlayManager.getOverlays()) - { - if (overlay.getPosition() == OverlayPosition.DYNAMIC || overlay.getPosition() == OverlayPosition.TOOLTIP) - { - // never allow moving dynamic or tooltip overlays - continue; - } - - final Rectangle bounds = overlay.getBounds(); - if (bounds.contains(mousePoint)) - { - currentManagedOverlay = overlay; - break; - } - } - } + currentManagedOverlay = findMangedOverlay(mousePoint); } if (currentManagedOverlay == null || !currentManagedOverlay.isResizable()) @@ -455,6 +439,33 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener return mouseEvent; } + /** + * Find an overlay to manage which is under the given mouse point + * @param mousePoint + * @return + */ + private Overlay findMangedOverlay(Point mousePoint) + { + synchronized (overlayManager) + { + for (Overlay overlay : overlayManager.getOverlays()) + { + if (overlay.getPosition() == OverlayPosition.DYNAMIC || overlay.getPosition() == OverlayPosition.TOOLTIP) + { + // never allow moving dynamic or tooltip overlays + continue; + } + + final Rectangle bounds = overlay.getBounds(); + if (bounds.contains(mousePoint)) + { + return overlay; + } + } + } + return null; + } + @Override public MouseEvent mouseDragged(MouseEvent mouseEvent) {