public bool DoBackspace()
        {
#if DEBUG
            if (dbugEnableTextManRecorder)
            {
                dbug_BackSpaceCount++;
                _dbugActivityRecorder.WriteInfo("TxLMan::DoBackSpace");
                _dbugActivityRecorder.BeginContext();
            }
#endif

            VisualSelectionRangeSnapShot removeSelRange = this.RemoveSelectedText();
            if (!removeSelRange.IsEmpty())
            {
                CancelSelect();
#if DEBUG
                if (dbugEnableTextManRecorder)
                {
                    _dbugActivityRecorder.EndContext();
                }
#endif
                return(true);
            }
            else
            {
                _updateJustCurrentLine = true;

                char deletedChar = _textLineWriter.DoBackspaceOneChar();
                if (deletedChar == '\0')
                {
                    //end of current line
                    if (!IsOnFirstLine)
                    {
                        CurrentLineNumber--;
                        DoEnd();
                        _commandHistoryList.AddDocAction(
                            new DocActionJoinWithNextLine(
                                _textLineWriter.LineNumber, _textLineWriter.CharIndex));
                        JoinWithNextLine();
                    }
#if DEBUG
                    if (dbugEnableTextManRecorder)
                    {
                        _dbugActivityRecorder.EndContext();
                    }
#endif
                    return(false);
                }
                else
                {
                    _commandHistoryList.AddDocAction(
                        new DocActionDeleteChar(
                            deletedChar, _textLineWriter.LineNumber, _textLineWriter.CharIndex));
#if DEBUG
                    if (dbugEnableTextManRecorder)
                    {
                        _dbugActivityRecorder.EndContext();
                    }
#endif
                    return(true);
                }
            }
        }
 public TextDomEventArgs(bool updateJustCurrentLine, VisualSelectionRangeSnapShot changedSnapShot)
 {
     this.UpdateJustCurrentLine = updateJustCurrentLine;
     this.SelectionSnapShot     = changedSnapShot;
 }