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 41944b5cd7..f946e62741 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 @@ -97,6 +97,14 @@ public abstract class Overlay implements LayoutableRenderableEntity { } + public void onMouseEnter() + { + } + + public void onMouseExit() + { + } + /** * Called when an overlay is dragged onto this, if dragTargetable is true. * Return true to consume the mouse event and prevent the other 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 b6adfa6813..4c3c7ee18b 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 @@ -107,6 +107,10 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener private boolean isResizeable; private OverlayBounds emptySnapCorners, snapCorners; + // focused overlay + private Overlay focusedOverlay; + private Overlay prevFocusedOverlay; + @Inject private OverlayRenderer( final Client client, @@ -174,6 +178,14 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener { menuEntries = null; + if (focusedOverlay == null && prevFocusedOverlay != null) + { + prevFocusedOverlay.onMouseExit(); + } + + prevFocusedOverlay = focusedOverlay; + focusedOverlay = null; + if (client.getGameState() == GameState.LOGGED_IN) { @@ -352,6 +364,20 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener menuEntries = createRightClickMenuEntries(overlay); } + if (focusedOverlay == null) + { + focusedOverlay = overlay; + if (focusedOverlay != prevFocusedOverlay) + { + if (prevFocusedOverlay != null) + { + prevFocusedOverlay.onMouseExit(); + } + + overlay.onMouseEnter(); + } + } + overlay.onMouseOver(); } }