static void ForEachEventListenerBubbleUp <T>(T e, HitChain hitPointChain, EventListenerAction <T> listenerAction) where T : UIEventArgs { HitInfo hitInfo; for (int i = hitPointChain.Count - 1; i >= 0; --i) { hitInfo = hitPointChain.GetHitInfo(i); if (hitInfo.HitElemAsRenderElement.GetController() is IUIEventListener listener) { if (e.SourceHitElement == null) { e.SetSourceHitObject(listener); } Point p = hitInfo.point; e.SetLocation(p.X, p.Y); e.SetCurrentContextElement(listener); if (listenerAction(e, listener)) { return; } } } }
static void ForEachSvgElementBubbleUp(UIEventArgs e, SvgHitChain hitChain, EventListenerAction listenerAction) { for (int i = hitChain.Count - 1; i >= 0; --i) { //propagate up var hitInfo = hitChain.GetHitInfo(i); //--------------------- //hit on element e.SetLocation((int)hitInfo.x, (int)hitInfo.y); if (listenerAction()) { return; } } }
static void ForEachEventListenerBubbleUp(UIEventArgs e, VgHitChain hitChain, EventListenerAction listenerAction) { for (int i = hitChain.Count - 1; i >= 0; --i) { //propagate up VgHitInfo hitInfo = hitChain.GetHitInfo(i); IUIEventListener controller = SvgElement.UnsafeGetController(hitInfo.GetSvgElement()) as IUIEventListener; //switch (hitInfo.hitObjectKind) //{ // default: // { // continue; // } // case HitObjectKind.Run: // { // CssRun run = (CssRun)hitInfo.hitObject; // controller = CssBox.UnsafeGetController(run.OwnerBox) as IEventListener; // } break; // case HitObjectKind.CssBox: // { // CssBox box = (CssBox)hitInfo.hitObject; // controller = CssBox.UnsafeGetController(box) as IEventListener; // } break; //} //--------------------- if (controller != null) { //found controller e.CurrentContextElement = controller; e.SetLocation((int)hitInfo.x, (int)hitInfo.y); if (listenerAction()) { return; } } } }
static void ForEachEventListenerBubbleUp(UIEventArgs e, SvgHitChain hitChain, EventListenerAction listenerAction) { for (int i = hitChain.Count - 1; i >= 0; --i) { //propagate up var hitInfo = hitChain.GetHitInfo(i); IEventListener controller = SvgElement.UnsafeGetController(hitInfo.svg) as IEventListener; //switch (hitInfo.hitObjectKind) //{ // default: // { // continue; // } // case HitObjectKind.Run: // { // CssRun run = (CssRun)hitInfo.hitObject; // controller = CssBox.UnsafeGetController(run.OwnerBox) as IEventListener; // } break; // case HitObjectKind.CssBox: // { // CssBox box = (CssBox)hitInfo.hitObject; // controller = CssBox.UnsafeGetController(box) as IEventListener; // } break; //} //--------------------- if (controller != null) { //found controller e.CurrentContextElement = controller; e.SetLocation((int)hitInfo.x, (int)hitInfo.y); if (listenerAction()) { return; } } } }
static void ForEachEventListenerBubbleUp(UIEventArgs e, CssBoxHitChain hitChain, EventListenerAction listenerAction) { for (int i = hitChain.Count - 1; i >= 0; --i) { //propagate up var hitInfo = hitChain.GetHitInfo(i); IEventListener controller = null; switch (hitInfo.hitObjectKind) { default: { continue; } case HitObjectKind.Run: { CssRun run = (CssRun)hitInfo.hitObject; controller = CssBox.UnsafeGetController(run.OwnerBox) as IEventListener; } break; case HitObjectKind.CssBox: { CssBox box = (CssBox)hitInfo.hitObject; controller = CssBox.UnsafeGetController(box) as IEventListener; } break; } //--------------------- if (controller != null) { //found controller if (e.SourceHitElement == null) { e.SourceHitElement = controller; } e.CurrentContextElement = controller; e.SetLocation(hitInfo.localX, hitInfo.localY); if (listenerAction()) { return; } } } }
static void ForEachEventListenerBubbleUp(UIEventArgs e, HitChain hitPointChain, EventListenerAction listenerAction) { HitInfo hitInfo; for (int i = hitPointChain.Count - 1; i >= 0; --i) { hitInfo = hitPointChain.GetHitInfo(i); IUIEventListener listener = hitInfo.hitElement.GetController() as IUIEventListener; if (listener != null) { if (e.SourceHitElement == null) { e.SourceHitElement = listener; } var hitPoint = hitInfo.point; e.SetLocation(hitPoint.X, hitPoint.Y); e.CurrentContextElement = listener; if (listenerAction(listener)) { return; } } } }
static void ForEachEventListenerBubbleUp(UIEventArgs e, HitChain hitPointChain, EventListenerAction listenerAction) { HitInfo hitInfo; for (int i = hitPointChain.Count - 1; i >= 0; --i) { hitInfo = hitPointChain.GetHitInfo(i); IEventListener listener = hitInfo.hitElement.GetController() as IEventListener; if (listener != null) { if (e.SourceHitElement == null) { e.SourceHitElement = listener; } var hitPoint = hitInfo.point; e.SetLocation(hitPoint.X, hitPoint.Y); e.CurrentContextElement = listener; if (listenerAction(listener)) { return; } } } }