//------- public TopWindowEventRoot(RenderElement topRenderElement) { _iTopBoxEventPortal = _topWinBoxEventPortal = new RenderElementEventPortal(topRenderElement); _rootgfx = topRenderElement.Root; _hoverMonitoringTask = new UIHoverMonitorTask(OnMouseHover); // UIPlatform.RegisterTimerTask(_hoverMonitoringTask); }
static void ForEachOnlyEventPortalBubbleUp(UIEventArgs e, HitChain hitPointChain, EventPortalAction eventPortalAction) { for (int i = hitPointChain.Count - 1; i >= 0; --i) { HitInfo hitPoint = hitPointChain.GetHitInfo(i); object currentHitElement = hitPoint.hitElement.GetController(); IEventPortal eventPortal = currentHitElement as IEventPortal; if (eventPortal != null) { var ppp = hitPoint.point; e.CurrentContextElement = currentHitElement as IUIEventListener; e.SetLocation(ppp.X, ppp.Y); if (eventPortalAction(eventPortal)) { return; } } } }
public TopWindowEventRoot(RootGraphic rootgfx, TopWindowRenderBox topRenderElement) { _mouseDownEventArgs = new UIMouseDownEventArgs(); _mouseMoveEventArgs = new UIMouseMoveEventArgs(); _mouseUpEventArgs = new UIMouseUpEventArgs(); _wheelEventArgs = new UIMouseWheelEventArgs(); _topWinBoxEventPortal = new RenderElementEventPortal(topRenderElement); #if DEBUG _topWinBoxEventPortal.dbugRootGraphics = (MyRootGraphic)rootgfx; #endif _iTopBoxEventPortal = _topWinBoxEventPortal; _rootgfx = rootgfx; _hoverMonitoringTask = new UIHoverMonitorTask(); _hoverMonitoringTask.Interval = 100;//ms _hoverMonitoringTask.Enabled = true; UIPlatform.RegisterTimerTask(_hoverMonitoringTask); }
static void ForEachOnlyEventPortalBubbleUp(UIEventArgs e, CssBoxHitChain hitPointChain, EventPortalAction eventPortalAction) { //only listener that need tunnel down for (int i = hitPointChain.Count - 1; i >= 0; --i) { //propagate up var hitInfo = hitPointChain.GetHitInfo(i); IEventPortal controller = null; switch (hitInfo.hitObjectKind) { default: { continue; } case HitObjectKind.Run: { CssRun run = (CssRun)hitInfo.hitObject; controller = CssBox.UnsafeGetController(run.OwnerBox) as IEventPortal; } break; case HitObjectKind.CssBox: { CssBox box = (CssBox)hitInfo.hitObject; controller = CssBox.UnsafeGetController(box) as IEventPortal; } break; } //--------------------- if (controller != null) { e.SetLocation(hitInfo.localX, hitInfo.localY); if (eventPortalAction(controller)) { return; } } } }
//------- public TopWindowEventRoot(RenderElement topRenderElement) { this.iTopBoxEventPortal = this.topWinBoxEventPortal = new RenderElementEventPortal(topRenderElement); this.rootgfx = topRenderElement.Root; this.hoverMonitoringTask = new UIHoverMonitorTask(OnMouseHover); }