Let overlapping tooltips stack vertically
Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
@@ -27,6 +27,7 @@ package net.runelite.client.ui.overlay.tooltip;
|
|||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
|
import java.awt.Rectangle;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Provider;
|
import javax.inject.Provider;
|
||||||
@@ -38,6 +39,7 @@ import net.runelite.client.ui.overlay.components.TooltipComponent;
|
|||||||
|
|
||||||
public class TooltipOverlay extends Overlay
|
public class TooltipOverlay extends Overlay
|
||||||
{
|
{
|
||||||
|
private static final int PADDING = 2;
|
||||||
private final TooltipManager tooltipManager;
|
private final TooltipManager tooltipManager;
|
||||||
private final Provider<Client> clientProvider;
|
private final Provider<Client> clientProvider;
|
||||||
|
|
||||||
@@ -60,25 +62,37 @@ public class TooltipOverlay extends Overlay
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final Rectangle lastLocation = new Rectangle();
|
||||||
|
|
||||||
for (Tooltip tooltip : tooltips)
|
for (Tooltip tooltip : tooltips)
|
||||||
{
|
{
|
||||||
final TooltipComponent tooltipComponent = new TooltipComponent();
|
final TooltipComponent tooltipComponent = new TooltipComponent();
|
||||||
tooltipComponent.setText(tooltip.getText());
|
tooltipComponent.setText(tooltip.getText());
|
||||||
|
|
||||||
|
final Point position = new Point();
|
||||||
|
|
||||||
if (tooltip.isFollowMouse())
|
if (tooltip.isFollowMouse())
|
||||||
{
|
{
|
||||||
final Client client = clientProvider.get();
|
final Client client = clientProvider.get();
|
||||||
final net.runelite.api.Point mouseCanvasPosition = client != null
|
final net.runelite.api.Point mouseCanvasPosition = client != null
|
||||||
? client.getMouseCanvasPosition()
|
? client.getMouseCanvasPosition()
|
||||||
: new net.runelite.api.Point(0, 0);
|
: new net.runelite.api.Point(0, 0);
|
||||||
tooltipComponent.setPosition(new Point(mouseCanvasPosition.getX(), mouseCanvasPosition.getY()));
|
|
||||||
|
position.setLocation(mouseCanvasPosition.getX(), mouseCanvasPosition.getY());
|
||||||
}
|
}
|
||||||
else
|
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();
|
tooltipManager.clear();
|
||||||
|
|||||||
Reference in New Issue
Block a user