X-Git-Url: https://jasonwoof.com/gitweb/?p=ckeditor.git;a=blobdiff_plain;f=_source%2Fplugins%2Fwysiwygarea%2Fplugin.js;h=5ea1f1aaed438cc26459d302b5ee96bc92e6bada;hp=e626aada71776c345d8966eebe1b60ef62a627c9;hb=039a051ccf3901311661022a30afd60fc38130c9;hpb=c9fdde67e6384bd5a66adc2b3bba5c4ce9db56c7
diff --git a/_source/plugins/wysiwygarea/plugin.js b/_source/plugins/wysiwygarea/plugin.js
index e626aad..5ea1f1a 100644
--- a/_source/plugins/wysiwygarea/plugin.js
+++ b/_source/plugins/wysiwygarea/plugin.js
@@ -14,7 +14,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
var nonExitableElementNames = { table:1,pre:1 };
// Matching an empty paragraph at the end of document.
- var emptyParagraphRegexp = /\s*<(p|div|address|h\d|center)[^>]*>\s*(?:
]*>| |\u00A0| )?\s*(:?<\/\1>)?(?=\s*$|<\/body>)/gi;
+ var emptyParagraphRegexp = /(^|
]*>)\s*<(p|div|address|h\d|center)[^>]*>\s*(?:
]*>| |\u00A0| )?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi;
var notWhitespaceEval = CKEDITOR.dom.walker.whitespaces( true );
@@ -92,6 +92,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
var marker = this.document.getById( 'cke_paste_marker' );
marker.scrollIntoView();
marker.remove();
+ marker = null;
}
CKEDITOR.tools.setTimeout( function()
@@ -132,14 +133,14 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
// Remove the original contents.
range.deleteContents();
- clone = !i && element || element.clone( true );
+ clone = !i && element || element.clone( 1 );
// If we're inserting a block at dtd-violated position, split
// the parent blocks until we reach blockLimit.
var current, dtd;
if ( isBlock )
{
- while ( ( current = range.getCommonAncestor( false, true ) )
+ while ( ( current = range.getCommonAncestor( 0, 1 ) )
&& ( dtd = CKEDITOR.dtd[ current.getName() ] )
&& !( dtd && dtd [ elementName ] ) )
{
@@ -530,7 +531,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
CKEDITOR.env.gecko && CKEDITOR.tools.setTimeout( activateEditing, 0, null, editor );
- domWindow = editor.window = new CKEDITOR.dom.window( domWindow );
+ domWindow = editor.window = new CKEDITOR.dom.window( domWindow );
domDocument = editor.document = new CKEDITOR.dom.document( domDocument );
domDocument.on( 'dblclick', function( evt )
@@ -542,7 +543,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
});
// Gecko/Webkit need some help when selecting control type elements. (#3448)
- if ( !( CKEDITOR.env.ie || CKEDITOR.env.opera) )
+ if ( !( CKEDITOR.env.ie || CKEDITOR.env.opera ) )
{
domDocument.on( 'mousedown', function( ev )
{
@@ -625,6 +626,8 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
editor.focusManager.blur();
});
+ var wasFocused;
+
domWindow.on( 'focus', function()
{
var doc = editor.document;
@@ -633,6 +636,15 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
blinkCursor();
else if ( CKEDITOR.env.opera )
doc.getBody().focus();
+ // Webkit needs focus for the first time on the HTML element. (#6153)
+ else if ( CKEDITOR.env.webkit )
+ {
+ if ( !wasFocused )
+ {
+ editor.document.getDocumentElement().focus();
+ wasFocused = 1;
+ }
+ }
editor.focusManager.focus();
});
@@ -873,9 +885,9 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
if ( editor.dataProcessor )
data = editor.dataProcessor.toDataFormat( data, fixForBody );
- // Strip the last blank paragraph within document.
+ // Reset empty if the document contains only one empty paragraph.
if ( config.ignoreEmptyParagraph )
- data = data.replace( emptyParagraphRegexp, '' );
+ data = data.replace( emptyParagraphRegexp, function( match, lookback ) { return lookback; } );
if ( docType )
data = docType + '\n' + data;
@@ -930,6 +942,10 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
// Temporary solution caused by #6025, supposed be unified by #6154.
else if ( CKEDITOR.env.opera && editor.document )
{
+ // Required for Opera when switching focus
+ // from another iframe, e.g. panels. (#6444)
+ var iframe = editor.window.$.frameElement;
+ iframe.blur(), iframe.focus();
editor.document.getBody().focus();
editor.selectionChange();
@@ -952,7 +968,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
var titleBackup;
// Setting voice label as window title, backup the original one
// and restore it before running into use.
- editor.on( 'contentDom', function ()
+ editor.on( 'contentDom', function()
{
var title = editor.document.getElementsByTag( 'title' ).getItem( 0 );
title.setAttribute( '_cke_title', editor.document.$.title );
@@ -970,6 +986,9 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
selectors.push( 'html.CSS1Compat ' + tag + '[contenteditable=false]' );
editor.addCss( selectors.join( ',' ) + '{ display:inline-block;}' );
}
+ // Set the HTML style to 100% to have the text cursor in affect (#6341)
+ else if ( CKEDITOR.env.gecko )
+ editor.addCss( 'html { height: 100% !important; }' );
// Switch on design mode for a short while and close it after then.
function blinkCursor( retry )
@@ -978,10 +997,11 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
function()
{
editor.document.$.designMode = 'on';
- setTimeout( function ()
+ setTimeout( function()
{
editor.document.$.designMode = 'off';
- editor.document.getBody().focus();
+ if ( CKEDITOR.currentInstance == editor )
+ editor.document.getBody().focus();
}, 50 );
},
function()
@@ -1043,7 +1063,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
// Fixing Firefox 'Back-Forward Cache' break design mode. (#4514)
if ( CKEDITOR.env.gecko )
{
- ( function ()
+ (function()
{
var body = document.body;