From a9d72cf9c4350d1be1a7427ff8b8d04ff34c8b27 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Sun, 2 Oct 2005 01:32:05 +0000 Subject: [PATCH] My change didn't properly "unhover" the old hover sprite when an overlapping but higher priority hover sprite was entered. Noted a refinement that would make getHit() more correct in the overlapping case. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3718 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- src/java/com/threerings/media/MediaPanel.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/java/com/threerings/media/MediaPanel.java b/src/java/com/threerings/media/MediaPanel.java index a4533b28a..9397780d6 100644 --- a/src/java/com/threerings/media/MediaPanel.java +++ b/src/java/com/threerings/media/MediaPanel.java @@ -703,18 +703,17 @@ public class MediaPanel extends JComponent // documentation inherited public void mouseMoved (MouseEvent me) { - if (_activeSprite instanceof HoverSprite) { - if (!_activeSprite.hitTest(me.getX(), me.getY())) { - ((HoverSprite) _activeSprite).setHovered(false); - _activeSprite = null; - } - } - Sprite s = getHit(me); - if (s instanceof HoverSprite) { - ((HoverSprite) s).setHovered(true); + if (_activeSprite == s) { + return; + } + if (_activeSprite instanceof HoverSprite) { + ((HoverSprite) _activeSprite).setHovered(false); } _activeSprite = s; + if (_activeSprite instanceof HoverSprite) { + ((HoverSprite) _activeSprite).setHovered(true); + } } /** @@ -723,6 +722,8 @@ public class MediaPanel extends JComponent */ protected Sprite getHit (MouseEvent me) { + // TODO: this should get all hit sprites, sort them by render + // priority and then return the first non-disabled sprite Sprite s = _spritemgr.getHighestHitSprite(me.getX(), me.getY()); if (!(s instanceof DisableableSprite) || ((DisableableSprite) s).isEnabled()) {