/// <summary> /// Поиск узла дерева, содержащего данную позицию в тексте, вместе со всеми объемлющими узлами /// Порядок узлов в списке - от узла к корню. Нулевой элемент - самый вложенный. /// </summary> /// <param name="p">Корень дерева, в котором искать</param> /// <param name="line">строка</param> /// <param name="col">столбец</param> /// <returns></returns> public static List<PointOfInterest> FindPointByLocation(PointOfInterest p, int line, int col) { if (!p.IsInside(line, col)) return null; List<PointOfInterest> result = new List<PointOfInterest>(); foreach (PointOfInterest pt in p.Items) { List<PointOfInterest> l2 = FindPointByLocation(pt, line, col); if (l2 != null) result.AddRange(l2); } result.Add(p); return result; }