public override bool HitTestCore(HitChain hitChain) { int testX; int testY; hitChain.GetTestPoint(out testX, out testY); GridCell cell = GetGridItemByPosition(testX, testY); if (cell != null && cell.HasContent) { hitChain.OffsetTestPoint(-cell.X, -cell.Y); var renderE = cell.ContentElement as RenderElement; if (renderE != null) { renderE.HitTestCore(hitChain); } hitChain.OffsetTestPoint(cell.X, cell.Y); return true; } return false; }
//============================================================== //hit test public bool HitTestCore(HitChain hitChain) { if ((propFlags & RenderElementConst.HIDDEN) != 0) { return false; } int testX; int testY; hitChain.GetTestPoint(out testX, out testY); if ((testY >= b_top && testY <= (b_top + b_height) && (testX >= b_left && testX <= (b_left + b_width)))) { if (this.MayHasViewport) { hitChain.OffsetTestPoint( -b_left + this.ViewportX, -b_top + this.ViewportY); } else { hitChain.OffsetTestPoint(-b_left, -b_top); } hitChain.AddHitObject(this); if (this.MayHasChild) { this.ChildrenHitTestCore(hitChain); } if (this.MayHasViewport) { hitChain.OffsetTestPoint( b_left - this.ViewportX, b_top - this.ViewportY); } else { hitChain.OffsetTestPoint(b_left, b_top); } if ((propFlags & RenderElementConst.TRANSPARENT_FOR_ALL_EVENTS) != 0 && hitChain.TopMostElement == this) { hitChain.RemoveCurrentHit(); return false; } else { return true; } } else { return false; } }