We are migrating CKEditor issue tracking to GitHub. Please, use GitHub to report any new issues.

The former tracking system (this website) will still be available in the read-only mode. All issues reported in the past will still be available publicly and can be referenced.

Important: we decided not to transfer all the tickets to GitHub, as many of them are not reproducible anymore or simply no longer requested by the community. If the issue you are interested in, can be still reproduced in the latest version of CKEditor, feel free to report it again on GitHub. At the same time please note that issues reported on this website are still taken into consideration when picking up candidates for next milestones.

Simplify range walking codes

The new range walker API is about to be ready with #3367, it introduced a completely new simplified way to perform daily range work, it's concise and powerful to support the the following ways when walk along range.
We should try to replace the bells and whistles we've had in v2 for ranges manipulation with this new API after we close #3367.

Now we could:

Walking along the content inside the range, mostly useful for style system.

Walking along the other opposite two sides of the range, mostly useful for enlargement and checking block boundary.

outside <-[ ...inside...]-> outside

With

// E.g. Walking along the left out side
varwalkerRange=newCKEDITOR.dom.range();walkerRange.setStartAt(document.getBody(),CKEDITOR.POSITION_AFTER_START);walkerRange.setEndAt(range.startContainer,range.startOffset);walker.guard=function(){//// Node processing...
};do{node=walker.next()}while(node)

Retrieve the boundary nodes of collapsed range:

leftBoundaryNode<-^->rightBoundaryNode

With

// E.g. Get the end boundary node after the range.
varwalkerRange=newCKEDITOR.dom.range();walkerRange.setStartAt(range.endContainer,range.endOffset);walkerRange.setEndAt(document.getBody(),CKEDITOR.POSITION_BEFORE_END);varendBoundaryNode=walkerRange.next();