- // The "enabled" flag is used to check whether the paste operation has\r
- // been completed (the onpaste event has been fired).\r
- var enabled = false;\r
- var setEnabled = function()\r
- {\r
- enabled = true;\r
- };\r
-\r
- body.on( 'paste', setEnabled );\r
-\r
- // Create a text range and move it inside the div.\r
- var textRange = body.$.createTextRange();\r
- textRange.moveToElementText( clipboardDiv.$ );\r
-\r
- // The execCommand in will fire the "onpaste", only if the\r
- // security settings are enabled.\r
- textRange.execCommand( 'Paste' );\r
-\r
- // Get the DIV html and reset it.\r
- var html = clipboardDiv.getHtml();\r
- clipboardDiv.setHtml( '' );\r
-\r
- body.removeListener( 'paste', setEnabled );\r
-\r
- // Return the HTML or false if not enabled.\r
- return enabled && html;\r
+ CKEDITOR.editor.prototype.insertText = function( text )\r
+ {\r
+ this.focus();\r
+ this.fire( 'saveSnapshot' );\r
+\r
+ var mode = this.getSelection().getStartElement().hasAscendant( 'pre', true ) ? CKEDITOR.ENTER_BR : this.config.enterMode,\r
+ isEnterBrMode = mode == CKEDITOR.ENTER_BR,\r
+ doc = this.document.$,\r
+ self = this,\r
+ line;\r
+\r
+ text = CKEDITOR.tools.htmlEncode( text.replace( /\r\n|\r/g, '\n' ) );\r
+\r
+ var startIndex = 0;\r
+ text.replace( /\n+/g, function( match, lastIndex )\r
+ {\r
+ line = text.substring( startIndex, lastIndex );\r
+ startIndex = lastIndex + match.length;\r
+ line.length && doInsertText( doc, line );\r
+\r
+ var lineBreakNums = match.length,\r
+ // Duo consequence line-break as a enter block.\r
+ enterBlockTimes = isEnterBrMode ? 0 : Math.floor( lineBreakNums / 2 ),\r
+ // Per link-break as a enter br.\r
+ enterBrTimes = isEnterBrMode ? lineBreakNums : lineBreakNums % 2;\r
+\r
+ // Line-breaks are converted to editor enter key strokes.\r
+ doEnter( self, mode, enterBlockTimes );\r
+ doEnter( self, CKEDITOR.ENTER_BR, enterBrTimes, isEnterBrMode ? false : true );\r
+ });\r
+\r
+ // Insert the last text line of text.\r
+ line = text.substring( startIndex, text.length );\r
+ line.length && doInsertText( doc, line );\r
+\r
+ this.fire( 'saveSnapshot' );\r