hitTest method

ResolvedElement? hitTest(
  1. DiagramPoint point, {
  2. double tolerance = 5,
  3. bool preferDescendants = true,
})

Implementation

ResolvedElement? hitTest(
  DiagramPoint point, {
  double tolerance = 5,
  bool preferDescendants = true,
}) {
  final ordered = spatialIndex
      ._query(
        DiagramRect.fromCenter(
          center: point,
          size: DiagramSize(tolerance * 2, tolerance * 2),
        ),
      )
      .reversed;
  // Attachment text is painted above ordinary element content.
  for (final element in ordered) {
    if (element is ResolvedConnector &&
        element.labelAt(point) != null &&
        _insideClippingAncestors(element, point)) {
      return element;
    }
  }
  ResolvedElement? hit;
  for (final element in ordered) {
    if (element.bounds.inflate(tolerance).contains(point) &&
        _insideClippingAncestors(element, point) &&
        element.hitTest(point, tolerance: tolerance)) {
      if (!preferDescendants) return element;
      if (hit == null || _isDescendantOf(element, hit.id)) hit = element;
    }
  }
  return hit;
}