<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -253,7 +253,7 @@ var CPWindowSaveImage       = nil,
     CPView                      _contentView;
     CPView                      _toolbarView;
 
-    CPView                      _mouseOverView;
+    CPArray                     _mouseEnteredStack;
     CPView                      _leftMouseDownView;
     CPView                      _rightMouseDownView;
 
@@ -1212,23 +1212,56 @@ CPTexturedBackgroundWindowMask
         
         case CPMouseMoved:          if (!_acceptsMouseMovedEvents)
                                         return;
-                                    
+
+                                    if (!_mouseEnteredStack)
+                                        _mouseEnteredStack = [];
+
                                     var hitTestView = [_windowView hitTest:point];
-        
-                                    if (hitTestView != _mouseOverView)
+
+                                    if ([_mouseEnteredStack count] &amp;&amp; [_mouseEnteredStack lastObject] === hitTestView)
+                                        return [hitTestView mouseMoved:anEvent];
+
+                                    var view = hitTestView,
+                                        mouseEnteredStack = [];
+
+                                    while (view)
                                     {
-                                        if (_mouseOverView)
-                                            [_mouseOverView mouseExited:[CPEvent mouseEventWithType:CPMouseExited location:point 
-                                                modifierFlags:[anEvent modifierFlags] timestamp:[anEvent timestamp] windowNumber:_windowNumber context:nil eventNumber:-1 clickCount:1 pressure:0]];
-                                    
-                                        if (hitTestView)
-                                            [hitTestView mouseEntered:[CPEvent mouseEventWithType:CPMouseEntered location:point 
-                                                modifierFlags:[anEvent modifierFlags] timestamp:[anEvent timestamp] windowNumber:_windowNumber context:nil eventNumber:-1 clickCount:1 pressure:0]];
-                            
-                                        _mouseOverView = hitTestView;
+                                        mouseEnteredStack.unshift(view);
+
+                                        view = [view superview];
                                     }
-                                    
-                                    [_mouseOverView mouseMoved:anEvent];
+
+                                    var deviation = MIN(_mouseEnteredStack.length, mouseEnteredStack.length);
+
+                                    while (deviation--)
+                                        if (_mouseEnteredStack[deviation] !== mouseEnteredStack[deviation])
+                                            break;
+
+                                    var index = deviation,
+                                        count = _mouseEnteredStack.length;
+
+                                    if (index &lt; count)
+                                    {
+                                        var event = [CPEvent mouseEventWithType:CPMouseExited location:point modifierFlags:[anEvent modifierFlags] timestamp:[anEvent timestamp] windowNumber:_windowNumber context:nil eventNumber:-1 clickCount:1 pressure:0];
+
+                                        for (; index &lt; count; ++index)
+                                            [_mouseEnteredStack[index] mouseExited:event];
+                                    }
+
+                                    index = deviation;
+                                    count = mouseEnteredStack.length;
+
+                                    if (index &lt; count)
+                                    {
+                                        var event = [CPEvent mouseEventWithType:CPMouseEntered location:point modifierFlags:[anEvent modifierFlags] timestamp:[anEvent timestamp] windowNumber:_windowNumber context:nil eventNumber:-1 clickCount:1 pressure:0];
+
+                                        for (; index &lt; count; ++index)
+                                            [mouseEnteredStack[index] mouseEntered:event];
+                                    }
+
+                                    _mouseEnteredStack = mouseEnteredStack;
+
+                                    [hitTestView mouseMoved:anEvent];
     }
 }
 </diff>
      <filename>AppKit/CPWindow/CPWindow.j</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>fe21fc82c4c2b9de98a932240371fc4a294d620f</id>
    </parent>
  </parents>
  <author>
    <name>Francisco Ryan Tolmasky I</name>
    <email>francisco@280north.com</email>
  </author>
  <url>http://github.com/280north/cappuccino/commit/1e3b79de1798ea4f8a84b72792e66bb7e1aa5d79</url>
  <id>1e3b79de1798ea4f8a84b72792e66bb7e1aa5d79</id>
  <committed-date>2009-06-13T14:50:38-07:00</committed-date>
  <authored-date>2009-06-13T14:50:38-07:00</authored-date>
  <message>Fix for superview's not remaining mouseEntered when mouse moves over subviews.

Closes #126.

Reviewed by me.</message>
  <tree>e08e3b13cf42e00c3ac9ce94925f72306e4a037f</tree>
  <committer>
    <name>Francisco Ryan Tolmasky I</name>
    <email>francisco@280north.com</email>
  </committer>
</commit>
