diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/TooltipComponent.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/TooltipComponent.java index 2e4b943063..fee7332497 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/TooltipComponent.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/TooltipComponent.java @@ -34,10 +34,9 @@ import java.awt.Rectangle; import java.util.regex.Pattern; import lombok.Setter; import net.runelite.api.IndexedSprite; -import net.runelite.client.ui.overlay.RenderableEntity; @Setter -public class TooltipComponent implements RenderableEntity +public class TooltipComponent implements LayoutableRenderableEntity { private static final Pattern BR = Pattern.compile("
"); private static final int OFFSET = 4; @@ -225,4 +224,22 @@ public class TooltipComponent implements RenderableEntity } } } + + @Override + public Rectangle getBounds() + { + return null; + } + + @Override + public void setPreferredLocation(Point position) + { + this.position = position; + } + + @Override + public void setPreferredSize(Dimension dimension) + { + + } } diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/tooltip/Tooltip.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/tooltip/Tooltip.java index f0c3700850..50974ada31 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/tooltip/Tooltip.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/tooltip/Tooltip.java @@ -24,12 +24,22 @@ */ package net.runelite.client.ui.overlay.tooltip; -import lombok.AllArgsConstructor; import lombok.Data; +import net.runelite.client.ui.overlay.components.LayoutableRenderableEntity; @Data -@AllArgsConstructor public class Tooltip { - private final String text; + private String text; + private LayoutableRenderableEntity component; + + public Tooltip(final String text) + { + this.text = text; + } + + public Tooltip(final LayoutableRenderableEntity component) + { + this.component = component; + } } 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 314adffee0..f808fa49f2 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 @@ -38,6 +38,7 @@ import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayLayer; import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPriority; +import net.runelite.client.ui.overlay.components.LayoutableRenderableEntity; import net.runelite.client.ui.overlay.components.TooltipComponent; @Singleton @@ -97,12 +98,22 @@ public class TooltipOverlay extends Overlay for (Tooltip tooltip : tooltips) { - final TooltipComponent tooltipComponent = new TooltipComponent(); - tooltipComponent.setModIcons(client.getModIcons()); - tooltipComponent.setText(tooltip.getText()); - tooltipComponent.setPosition(new Point(tooltipX, tooltipY + newBounds.height)); + final LayoutableRenderableEntity entity; - final Dimension dimension = tooltipComponent.render(graphics); + if (tooltip.getComponent() != null) + { + entity = tooltip.getComponent(); + } + else + { + final TooltipComponent tooltipComponent = new TooltipComponent(); + tooltipComponent.setModIcons(client.getModIcons()); + tooltipComponent.setText(tooltip.getText()); + entity = tooltipComponent; + } + + entity.setPreferredLocation(new Point(tooltipX, tooltipY + newBounds.height)); + final Dimension dimension = entity.render(graphics); // Create incremental tooltip newBounds newBounds.height += dimension.height + PADDING;