diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/tooltip/TooltipOverlay.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/tooltip/TooltipOverlay.java index b58afd5e79..bceca27d39 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/tooltip/TooltipOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/tooltip/TooltipOverlay.java @@ -27,6 +27,7 @@ package net.runelite.client.ui.overlay.tooltip; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.Point; +import java.awt.Rectangle; import java.util.List; import javax.inject.Inject; import javax.inject.Provider; @@ -38,6 +39,7 @@ import net.runelite.client.ui.overlay.components.TooltipComponent; public class TooltipOverlay extends Overlay { + private static final int PADDING = 2; private final TooltipManager tooltipManager; private final Provider clientProvider; @@ -60,25 +62,37 @@ public class TooltipOverlay extends Overlay return null; } + final Rectangle lastLocation = new Rectangle(); + for (Tooltip tooltip : tooltips) { final TooltipComponent tooltipComponent = new TooltipComponent(); tooltipComponent.setText(tooltip.getText()); + final Point position = new Point(); + if (tooltip.isFollowMouse()) { final Client client = clientProvider.get(); final net.runelite.api.Point mouseCanvasPosition = client != null ? client.getMouseCanvasPosition() : new net.runelite.api.Point(0, 0); - tooltipComponent.setPosition(new Point(mouseCanvasPosition.getX(), mouseCanvasPosition.getY())); + + position.setLocation(mouseCanvasPosition.getX(), mouseCanvasPosition.getY()); } else { - tooltipComponent.setPosition(tooltip.getPosition()); + position.setLocation(tooltip.getPosition()); } - tooltipComponent.render(graphics, parent); + if (lastLocation.contains(position)) + { + position.translate(0, -lastLocation.height - PADDING); + } + + tooltipComponent.setPosition(position); + lastLocation.setLocation(position); + lastLocation.setSize(tooltipComponent.render(graphics, parent)); } tooltipManager.clear();