From cd97adf00b141416b7d9735503a839f47e998676 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Tue, 5 Dec 2006 06:52:54 +0000 Subject: [PATCH] Track bounds changes for our underlying sprite in such a way that we dirty things properly if they do. Simply stealing our target sprite's _bounds will not result in the necessary calls to addDirtyRegion() if they change due to calls to setLocation() on our (now unmanaged) target sprite. git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@89 ed5b42cb-e716-0410-a449-f6a68f950b19 --- .../threerings/media/animation/GleamAnimation.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/java/com/threerings/media/animation/GleamAnimation.java b/src/java/com/threerings/media/animation/GleamAnimation.java index 30531248..44b390d8 100644 --- a/src/java/com/threerings/media/animation/GleamAnimation.java +++ b/src/java/com/threerings/media/animation/GleamAnimation.java @@ -8,6 +8,7 @@ import java.awt.Color; import java.awt.Composite; import java.awt.Graphics2D; import java.awt.Image; +import java.awt.Rectangle; import java.awt.Transparency; import com.threerings.media.sprite.Sprite; @@ -35,7 +36,7 @@ public class GleamAnimation extends Animation public GleamAnimation (SpriteManager spmgr, Sprite sprite, Color color, int upmillis, int downmillis, boolean fadeIn) { - super(sprite.getBounds()); + super(new Rectangle(sprite.getBounds())); _spmgr = spmgr; _sprite = sprite; _color = color; @@ -62,6 +63,14 @@ public class GleamAnimation extends Animation return; } + // if the sprite is moved or changed size while we're gleaming it, + // track those changes + if (!_bounds.equals(_sprite.getBounds())) { + Rectangle obounds = new Rectangle(_bounds); + _bounds.setBounds(_sprite.getBounds()); + invalidateAfterChange(obounds); + } + if (_alpha != alpha) { _alpha = alpha; invalidate();