Fix bug with rendering more than two tooltips following mouse

This commit is contained in:
Charlie Waters
2018-03-15 16:46:49 -04:00
committed by Adam
parent 81012a1929
commit df540aa7b8

View File

@@ -57,14 +57,14 @@ public class TooltipOverlay extends Overlay
@Override @Override
public Dimension render(Graphics2D graphics, Point parent) public Dimension render(Graphics2D graphics, Point parent)
{ {
List<Tooltip> tooltips = tooltipManager.getTooltips(); final List<Tooltip> tooltips = tooltipManager.getTooltips();
if (tooltips.isEmpty()) if (tooltips.isEmpty())
{ {
return null; return null;
} }
final Rectangle lastLocation = new Rectangle(); Rectangle lastLocation = null;
for (Tooltip tooltip : tooltips) for (Tooltip tooltip : tooltips)
{ {
@@ -88,14 +88,26 @@ public class TooltipOverlay extends Overlay
position.setLocation(tooltip.getPosition()); position.setLocation(tooltip.getPosition());
} }
if (lastLocation.contains(position)) // check if this tooltip would overlap the last
if (lastLocation != null && lastLocation.contains(position))
{ {
// shift tooltip above previous
position.translate(0, -lastLocation.height - PADDING); position.translate(0, -lastLocation.height - PADDING);
} }
// render tooltip
tooltipComponent.setPosition(position); tooltipComponent.setPosition(position);
lastLocation.setLocation(position); final Dimension thisSize = tooltipComponent.render(graphics, parent);
lastLocation.setSize(tooltipComponent.render(graphics, parent));
// update tooltip bounding rect
if (lastLocation == null)
{
lastLocation = new Rectangle(position, thisSize);
}
else
{
lastLocation.setSize(new Dimension(Math.max(lastLocation.width, thisSize.width), lastLocation.height + thisSize.height + PADDING));
}
} }
tooltipManager.clear(); tooltipManager.clear();