private bool IsRangeInUrl(MarkupRange range) { //must have this range cloned, otherwise in some cases IsInsideURL call // was MOVING the current word range! if "www.foo.com" was in the editor, // when the final "\"" was the current word, this call MOVED the current // word range BACK to www.foo.com, then nextWord would get "\"" and a loop // would occur (bug 411528) range = range.Clone(); IMarkupPointer2Raw p2StartRaw = (IMarkupPointer2Raw)range.Start.PointerRaw; bool insideUrl; p2StartRaw.IsInsideURL(range.End.PointerRaw, out insideUrl); return(insideUrl); }
public OleUndoUnit(MshtmlMarkupServices markupServices, MarkupRange selection) { _markupServices = markupServices; //serialize the current position of the markup pointers so that they can be restored if //the DOM gets rolled back into the same state via an undo/redo operation. if (selection != null && selection.Positioned) { IMarkupPointer2Raw pointer2StartRaw = selection.Start.PointerRaw as IMarkupPointer2Raw; IMarkupPointer2Raw pointer2EndRaw = selection.End.PointerRaw as IMarkupPointer2Raw; pointer2StartRaw.GetMarkupPosition(out _startPosition); pointer2EndRaw.GetMarkupPosition(out _endPosition); pointer2StartRaw.GetContainer(out _markupContainer); } _description = "OleUndoUnit" + Guid.NewGuid().ToString(); Undo = true; }
protected MarkupRange GetMarkupRange() { MarkupRange range = null; try { if (_markupContainer != null) { range = _markupServices.CreateMarkupRange(); IMarkupPointer2Raw pointer2StartRaw = range.Start.PointerRaw as IMarkupPointer2Raw; IMarkupPointer2Raw pointer2EndRaw = range.End.PointerRaw as IMarkupPointer2Raw; pointer2StartRaw.MoveToMarkupPosition(_markupContainer, _startPosition); pointer2EndRaw.MoveToMarkupPosition(_markupContainer, _endPosition); } } catch (Exception e) { Debug.Fail("Failed to get markup range", e.ToString()); } return(range); }