protected void LeaveUnhoveredFragments(MouseState mouse) { var pos = mouse.Position; List <Fragment> leavedFragments = null; foreach (var fragment in MouseHoverFragments) { if (!mouse.IsOverView || !fragment.Contains(pos)) { if (fragment.IsMouseHover) { fragment.MouseLeave?.Invoke(); fragment.IsMouseHover = false; } if (leavedFragments == null) { leavedFragments = new List <Fragment>(); } leavedFragments.Add(fragment); } } leavedFragments?.ForEach(f => MouseHoverFragments.Remove(f)); }
private void SetMouseHoverCore(Fragment fragment) { fragment.IsMouseHover = true; fragment.MouseEnter(); MouseHoverFragments.Add(fragment); }