diff --git a/src/java/com/threerings/miso/client/MisoScenePanel.java b/src/java/com/threerings/miso/client/MisoScenePanel.java index 5e1144c9..fe3f2743 100644 --- a/src/java/com/threerings/miso/client/MisoScenePanel.java +++ b/src/java/com/threerings/miso/client/MisoScenePanel.java @@ -1321,11 +1321,12 @@ public class MisoScenePanel extends VirtualMediaPanel { // make sure the indicators are ready if (!_indicatorsLaidOut) { - List boundaries = Lists.newArrayList(); for (Map.Entry entry : _indicators.entrySet()) { - entry.getValue().layout(gfx, entry.getKey(), _vbounds, boundaries); - dirtyIndicator(entry.getValue()); - boundaries.add(entry.getValue().getBounds()); + SceneObjectIndicator indic = entry.getValue(); + if (!indic.isLaidOut()) { + indic.layout(gfx, entry.getKey(), _vbounds); + dirtyIndicator(indic); + } } _indicatorsLaidOut = true; } diff --git a/src/java/com/threerings/miso/client/SceneObjectIndicator.java b/src/java/com/threerings/miso/client/SceneObjectIndicator.java index 314a990c..d79e19fd 100644 --- a/src/java/com/threerings/miso/client/SceneObjectIndicator.java +++ b/src/java/com/threerings/miso/client/SceneObjectIndicator.java @@ -41,8 +41,12 @@ public interface SceneObjectIndicator /** * Positions the indicator in the scene in relation to key */ - public void layout (Graphics2D gfx, SceneObject key, Rectangle viewBounds, - Collection otherIndicators); + public void layout (Graphics2D gfx, SceneObject key, Rectangle viewBounds); + + /** + * Returns whether the indicator has already been laid out (and thus doesn't need to be again) + */ + public boolean isLaidOut (); /** * Called when the indicator is removed from the scene. diff --git a/src/java/com/threerings/miso/client/SceneObjectTip.java b/src/java/com/threerings/miso/client/SceneObjectTip.java index 7e93a406..7166f018 100644 --- a/src/java/com/threerings/miso/client/SceneObjectTip.java +++ b/src/java/com/threerings/miso/client/SceneObjectTip.java @@ -21,8 +21,6 @@ package com.threerings.miso.client; -import java.util.Collection; - import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Composite; @@ -77,6 +75,11 @@ public class SceneObjectTip extends LabelSausage super(new Label(text, _foreground, _font), icon); } + public boolean isLaidOut () + { + return _label.isLaidOut(); + } + /** * Called to initialize the tip so that it can be painted. * @@ -84,8 +87,7 @@ public class SceneObjectTip extends LabelSausage * @param boundary the boundary of all displayable space. * @param othertips other tip boundaries that we should avoid. */ - public void layout (Graphics2D gfx, SceneObject tipFor, Rectangle boundary, - Collection othertips) + public void layout (Graphics2D gfx, SceneObject tipFor, Rectangle boundary) { layout(gfx, ICON_PAD, EXTRA_PAD); bounds = new Rectangle(_size);