예제 #1
0
 public override void InvokeUndo(InternalTextLayerController textLayer)
 {
     textLayer.CurrentLineNumber = startLineNumber;
     textLayer.TryMoveCaretTo(startCharIndex);
     textLayer.StartSelect();
     textLayer.CurrentLineNumber = endLineNumber;
     textLayer.TryMoveCaretTo(endCharIndex);
     textLayer.EndSelect();
 }
예제 #2
0
        public void HandleDoubleClick(UIMouseEventArgs e)
        {
            internalTextLayerController.CancelSelect();
            EditableRun textRun = this.CurrentTextRun;

            if (textRun != null)
            {
                VisualPointInfo pointInfo          = internalTextLayerController.GetCurrentPointInfo();
                int             lineCharacterIndex = pointInfo.LineCharIndex;
                int             local_sel_Index    = pointInfo.RunLocalSelectedIndex;
                //default behaviour is select only a hit word under the caret
                //so ask the text layer to find a hit word
                int startAt, len;
                internalTextLayerController.FindUnderlyingWord(out startAt, out len);
                if (len > 0)
                {
                    InvalidateGraphicOfCurrentLineArea();
                    internalTextLayerController.TryMoveCaretTo(startAt, true);
                    internalTextLayerController.StartSelect();
                    internalTextLayerController.TryMoveCaretTo(startAt + len);
                    internalTextLayerController.EndSelect();


                    //internalTextLayerController.TryMoveCaretTo(lineCharacterIndex - local_sel_Index, true);
                    //internalTextLayerController.StartSelect();
                    //internalTextLayerController.TryMoveCaretTo(internalTextLayerController.CharIndex + textRun.CharacterCount);
                    //internalTextLayerController.EndSelect();

                    InvalidateGraphicOfCurrentLineArea();
                }
            }
        }
예제 #3
0
 public override void InvokeRedo(InternalTextLayerController textLayer)
 {
     textLayer.CurrentLineNumber = startLineNumber;
     textLayer.TryMoveCaretTo(startCharIndex);
     if (singleInsertTextRun != null)
     {
         textLayer.AddTextRunToCurrentLine(singleInsertTextRun);
     }
     else
     {
         textLayer.AddTextRunsToCurrentLine(insertingTextRuns);
     }
 }
예제 #4
0
        public void HandleDoubleClick(UIMouseEventArgs e)
        {
            internalTextLayerController.CancelSelect();
            EditableRun textRun = this.CurrentTextRun;

            if (textRun != null)
            {
                VisualPointInfo pointInfo          = internalTextLayerController.GetCurrentPointInfo();
                int             lineCharacterIndex = pointInfo.LineCharIndex;
                int             localselIndex      = pointInfo.RunLocalSelectedIndex;
                internalTextLayerController.TryMoveCaretTo(lineCharacterIndex - localselIndex - 1);
                internalTextLayerController.StartSelect();
                internalTextLayerController.TryMoveCaretTo(internalTextLayerController.CharIndex + textRun.CharacterCount);
                internalTextLayerController.EndSelect();
            }
        }
예제 #5
0
 public override void InvokeUndo(InternalTextLayerController textLayer)
 {
     textLayer.CurrentLineNumber = startLineNumber;
     textLayer.TryMoveCaretTo(startCharIndex);
     textLayer.AddCharToCurrentLine(c);
 }
예제 #6
0
 public override void InvokeRedo(InternalTextLayerController textLayer)
 {
     textLayer.CurrentLineNumber = startLineNumber;
     textLayer.TryMoveCaretTo(startCharIndex);
     textLayer.DoDelete();
 }