public static IHTMLElement GetSelectedChildEditField(IHTMLElement parent, MarkupRange selection) { if (selection == null || !selection.Positioned) { Trace.Fail("Selection is invalid!"); return null; } IHTMLElement element = selection.ParentElement(); if (element == null || !HTMLElementHelper.IsChildOrSameElement(parent, element)) return null; do { if (InlineEditField.IsEditField(element)) return element; element = element.parentElement; } while (element != null && element.sourceIndex != parent.sourceIndex); return null; }
protected override bool TryMoveToValidSelection(MarkupRange range) { IHTMLElement element; element = range.ParentElement(ElementFilters.CreateTagIdFilter("DIV")); while (element != null) { if (ContentSourceManager.IsSmartContent(element)) { SmartContentSelection.SelectIfSmartContentElement(this, element); return true; } element = element.parentElement; } return false; }
/// <summary> /// Expands a range to the safest outter tags that can be contained without encompassing /// text that is not currently in this range. /// </summary> /// <param name="range"></param> private void SelectOuter(MarkupRange range) { IHTMLElement parent = range.ParentElement(); MarkupRange editableRange = MarkupHelpers.GetEditableRange(parent, MarkupServices); if (editableRange == null) return; while (parent != null && range.MoveOutwardIfNoContent()) { parent = range.Start.CurrentScope; } if (range.Start.IsLeftOf(editableRange.Start)) range.Start.MoveToPointer(editableRange.Start); if (range.End.IsRightOf(editableRange.End)) range.End.MoveToPointer(editableRange.End); return; }
private void IgnoreSuggestedUrl(string matchText, GlossaryLinkItem linkItem, MarkupRange markupRange) { IHTMLElement parent = markupRange.ParentElement(); while (parent != null && !(parent is IHTMLAnchorElement)) { parent = parent.parentElement; } if (parent != null && matchText.ToLower(CultureInfo.CurrentCulture) == parent.innerText.ToLower(CultureInfo.CurrentCulture)) _linkIgnoreWord = matchText; }
private void InsertSuggestedUrl(string matchText, GlossaryLinkItem linkItem, MarkupRange markupRange) { if (GlossarySettings.AutoLinkTermsOnlyOnce && TermAlreadyLinked(matchText, linkItem.Url)) return; // Make sure we're not in the title and not in a hyperlink already IHTMLElement parentElement = _blogPostHtmlEditorControl.PostTitleElement; IHTMLElement currentElement = markupRange.ParentElement(); while (currentElement != null) { if (parentElement == currentElement) return; // in the title if (currentElement.tagName.ToLower(CultureInfo.InvariantCulture) == "a") return; // in an anchor currentElement = currentElement.parentElement; } if (_linkIgnoreWord != null && matchText.ToLower(CultureInfo.CurrentCulture) == _linkIgnoreWord.ToLower(CultureInfo.CurrentCulture)) return; _blogPostHtmlEditorControl.InsertLink(linkItem.Url, matchText, linkItem.Title, linkItem.Rel, linkItem.OpenInNewWindow, markupRange); _blogPostHtmlEditorControl.SelectedMarkupRange.Collapse(false); }
public static IHTMLElement GetContainingSmartContentElement(MarkupRange range) { IHTMLElement containingSmartContent = range.ParentElement(IsSmartContentContainer); if (containingSmartContent != null) { return containingSmartContent; } else { IHTMLElement[] elements = range.GetTopLevelElements(MarkupRange.FilterNone); if (elements.Length == 1 && IsSmartContent(elements[0])) { return elements[0]; } } return null; }