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;
 }