Got questions, comments, patches, etc.?
Contact Jason Woofenden
gitweb
/
ckeditor.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vanilla ckeditor-3.2.2
[ckeditor.git]
/
_source
/
core
/
dom
/
range.js
diff --git
a/_source/core/dom/range.js
b/_source/core/dom/range.js
index
127f7aa
..
5a05ee1
100644
(file)
--- a/
_source/core/dom/range.js
+++ b/
_source/core/dom/range.js
@@
-1240,7
+1240,7
@@
CKEDITOR.dom.range = function( document )
* always anchor beside text nodes or innermost element.
\r
* @param {Number} mode ( CKEDITOR.SHRINK_ELEMENT | CKEDITOR.SHRINK_TEXT ) The shrinking mode.
\r
*/
\r
* always anchor beside text nodes or innermost element.
\r
* @param {Number} mode ( CKEDITOR.SHRINK_ELEMENT | CKEDITOR.SHRINK_TEXT ) The shrinking mode.
\r
*/
\r
- shrink : function( mode )
\r
+ shrink : function( mode, selectContents )
\r
{
\r
// Unable to shrink a collapsed range.
\r
if ( !this.collapsed )
\r
{
\r
// Unable to shrink a collapsed range.
\r
if ( !this.collapsed )
\r
@@
-1315,14
+1315,14
@@
CKEDITOR.dom.range = function( document )
if ( moveStart )
\r
{
\r
var textStart = walker[ mode == CKEDITOR.SHRINK_ELEMENT ? 'lastForward' : 'next']();
\r
if ( moveStart )
\r
{
\r
var textStart = walker[ mode == CKEDITOR.SHRINK_ELEMENT ? 'lastForward' : 'next']();
\r
- textStart && this.setStartBefore( textStart );
\r
+ textStart && this.setStartAt( textStart, selectContents ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_START );
\r
}
\r
\r
if ( moveEnd )
\r
{
\r
walker.reset();
\r
var textEnd = walker[ mode == CKEDITOR.SHRINK_ELEMENT ? 'lastBackward' : 'previous']();
\r
}
\r
\r
if ( moveEnd )
\r
{
\r
walker.reset();
\r
var textEnd = walker[ mode == CKEDITOR.SHRINK_ELEMENT ? 'lastBackward' : 'previous']();
\r
- textEnd && this.setEndAfter( textEnd );
\r
+ textEnd && this.setEndAt( textEnd, selectContents ? CKEDITOR.POSITION_BEFORE_END : CKEDITOR.POSITION_AFTER_END );
\r
}
\r
\r
return !!( moveStart || moveEnd );
\r
}
\r
\r
return !!( moveStart || moveEnd );
\r
@@
-1382,6
+1382,11
@@
CKEDITOR.dom.range = function( document )
// we will not need this check for our use of this class so we can
\r
// ignore it for now.
\r
\r
// we will not need this check for our use of this class so we can
\r
// ignore it for now.
\r
\r
+ // Fixing invalid range start inside dtd empty elements.
\r
+ if( startNode.type == CKEDITOR.NODE_ELEMENT
\r
+ && CKEDITOR.dtd.$empty[ startNode.getName() ] )
\r
+ startNode = startNode.getParent(), startOffset = startNode.getIndex();
\r
+
\r
this.startContainer = startNode;
\r
this.startOffset = startOffset;
\r
\r
this.startContainer = startNode;
\r
this.startOffset = startOffset;
\r
\r
@@
-1408,6
+1413,11
@@
CKEDITOR.dom.range = function( document )
// will not need this check for our use of this class so we can ignore
\r
// it for now.
\r
\r
// will not need this check for our use of this class so we can ignore
\r
// it for now.
\r
\r
+ // Fixing invalid range end inside dtd empty elements.
\r
+ if( endNode.type == CKEDITOR.NODE_ELEMENT
\r
+ && CKEDITOR.dtd.$empty[ endNode.getName() ] )
\r
+ endNode = endNode.getParent(), endOffset = endNode.getIndex() + 1;
\r
+
\r
this.endContainer = endNode;
\r
this.endOffset = endOffset;
\r
\r
this.endContainer = endNode;
\r
this.endOffset = endOffset;
\r
\r