public override void SetCurrentKeyboardFocus(RenderElement renderElement) { if (renderElement == null) { this.topWindowEventRoot.CurrentKeyboardFocusedElement = null; return; } var owner = renderElement.GetController() as IEventListener; if (owner != null) { this.topWindowEventRoot.CurrentKeyboardFocusedElement = owner; } }
public override string ToString() { RenderElement renderE = HitElem as RenderElement; if (renderE != null) { object controller = renderE.GetController(); if (controller != null) { return(point + " :" + renderE.ToString() + " " + renderE.RectBounds.ToString() + " " + renderE.GetType().Name + " , ctrl=" + controller); } else { return(point + " :" + renderE.ToString() + " " + renderE.RectBounds.ToString() + " " + renderE.GetType().Name); } } else { return(point + " :" + HitElem.ToString()); } }
// static RenderElement HitTestOnPreviousChain(HitChain hitPointChain, HitChain previousChain, int x, int y) // { //#if DEBUG // if (hitPointChain == previousChain) // { // throw new NotSupportedException(); // } //#endif // if (previousChain.Count > 0) // { // previousChain.SetStartTestPoint(x, y); // //test on prev chain top to bottom // int j = previousChain.Count; // for (int i = 0; i < j; ++i) // { // HitInfo hitInfo = previousChain.GetHitInfo(i); // RenderElement elem = hitInfo.HitElemAsRenderElement; // if (elem != null && elem.VisibleAndHasParent) // { // if (elem.Contains(hitInfo.point)) // { // RenderElement found = elem.FindUnderlyingSiblingAtPoint(hitInfo.point); // if (found == null) // { // Point leftTop = elem.Location; // hitPointChain.OffsetTestPoint(leftTop.X, leftTop.Y); // hitPointChain.AddHitObject(elem); // //add to chain // } // else // { // break; // } // } // } // else // { // break; // } // } // } // //--------------------------------- // if (hitPointChain.Count > 0) // { // var commonElement = hitPointChain.GetHitInfo(hitPointChain.Count - 1).HitElemAsRenderElement; // hitPointChain.RemoveCurrentHit(); // return commonElement; // } // else // { // return null; // } // } void HitTestCoreWithPrevChainHint(HitChain hitChain, HitChain previousChain, int x, int y) { //--------------------------------- //test on previous chain first , find common element hitChain.Reset(); hitChain.SetStartTestPoint(x, y); #if DEBUG hitChain.dbugHitPhase = _dbugHitChainPhase; #endif //if (this.dbugId > 0 && isDragging && previousChain.Count > 1) //{ //} //RenderElement commonElement = HitTestOnPreviousChain(hitPointChain, previousChain, x, y); //temp fix //TODO: fix bug on HitTestOnPreviousChain() RenderElement commonElement = _topRenderElement; commonElement.HitTestCore(hitChain); //remove disable elements //if (hitPointChain.dbugHitPhase == dbugHitChainPhase.MouseDown) //{ int j = hitChain.Count; for (int i = 0; i < j; ++i) { HitInfo info = hitChain.GetHitInfo(i); RenderElement renderE = info.HitElemAsRenderElement; if (renderE != null && renderE.GetController() is IUIEventListener ui && !ui.Enabled) { HitChain.UnsafeClear(hitChain); break;//stop loop and exit } } //} }
public override void SetCurrentKeyboardFocus(RenderElement renderElement) { if (renderElement == null) { this.topWindowEventRoot.CurrentKeyboardFocusedElement = null; return; } var owner = renderElement.GetController() as IEventListener; if (owner != null) { this.topWindowEventRoot.CurrentKeyboardFocusedElement = owner; } }