protected override void UpdateInsertionPoint() { IViewPanel viewPanel = MoveStrategy.GetContainerHost((SceneElement)this.LayoutContainer) as IViewPanel; this.ClearAdorner(); this.InsertionPoint.Element = this.LayoutContainer; bool isCursorAtEnd = true; this.InsertionPoint.Index = FlowPanelLayoutUtilities.GetInsertionIndex((SceneElement)this.LayoutContainer, this.ActiveView.TransformPoint((IViewObject)this.ActiveView.HitTestRoot, this.LayoutContainer.Visual, this.DragCurrentPosition), out isCursorAtEnd); this.InsertionPoint.IsCursorAtEnd = isCursorAtEnd; this.AdornerSet = (AdornerSet) new FlowPanelInsertionPointAdornerSet(this.ToolContext, this.LayoutContainer, (FlowPanelInsertionPoint)this.InsertionPoint); this.ActiveView.AdornerLayer.Add((IAdornerSet)this.AdornerSet); }
protected override void UpdateInsertionPoint() { this.ClearAdorner(); this.InsertionPoint.Element = this.LayoutContainer; ITextFlowSceneNode textFlowSceneNode = this.InsertionPoint.Element as ITextFlowSceneNode; Point mousePosition = this.InsertionPoint.Element.ViewModel.DefaultView.GetMousePosition(this.Pointer, MoveStrategy.GetContainerHost((SceneElement)this.InsertionPoint.Element)); IViewTextPointer positionFromPoint = textFlowSceneNode.GetPositionFromPoint(mousePosition); IViewTextPointer position = positionFromPoint != null?positionFromPoint.GetInsertionPosition(LogicalDirection.Forward) : textFlowSceneNode.ContentEnd.GetNextInsertionPosition(LogicalDirection.Backward); this.InsertionPoint.IsCursorAtEnd = false; if (textFlowSceneNode.ContentStart == null) { this.InsertionPoint.IsCursorAtEnd = true; } else { this.InsertionPoint.Index = textFlowSceneNode.ContentStart.GetOffsetToPosition(position); this.AdornerSet = (AdornerSet) new TextFlowInsertionPointAdornerSet(this.ToolContext, this.LayoutContainer, (TextFlowInsertionPoint)this.InsertionPoint); this.ActiveView.AdornerLayer.Add((IAdornerSet)this.AdornerSet); } }