Ticket #4073: 4073.patch

File 4073.patch, 4.6 KB (added by Garry Yao, 10 years ago)
  • _test/dt/core/dom/range.html

     
    10621067                 */
    10631068                test_enlarge_block6 : function()
    10641069                {
    1065                         var range = getRange( 'S11', null );
     1070                        var range = getRange( 'S11' );
    10661071                        range.enlarge( CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS );
    10671072
    10681073                        assert.areSame( document.getElementById( '_EnlargeP17' ),
     
    10701075                        assert.areSame( 0, range.startOffset, 'range.startOffset' );
    10711076                },
    10721077
     1078                /**
     1079                 * Test enlarge block when there's no nodes to enlarge.
     1080                 */
     1081                test_enlarge_block7 : function()
     1082                {
     1083                        var range = getRange( 'S12' );
     1084                        range.enlarge( CKEDITOR.ENLARGE_BLOCK_CONTENTS );
     1085                        var frag = range.extractContents(),
     1086                                tmp = new CKEDITOR.dom.element( 'div' );
     1087                        tmp.append( frag );
     1088                        assert.areSame( '<span>test block</span>', CKEDITOR.test.getInnerHtml( tmp ) );
     1089                },
     1090
    10731091                test_deleteContents_W3C_1 : function()
    10741092                {
    10751093                        // W3C DOM Range Specs - Section 2.6 - Example 1
     
    23852403                <p id="_EnlargeP4">Test <i id="_EnlargeI4"> Enlarge</i></p>
    23862404                <p id="_EnlargeP5">Test <i id="_EnlargeI5">Enlarge</i></p>
    23872405                <p id="_EnlargeP6">Test <i id="_EnlargeI6"><b></b>Enlarge</i></p>
    2388                 <p id="_EnlargeP7">Test <span id="S1"></span>List<br/ >Item Enlarge</p>
     2406                <p id="_EnlargeP7">Test <span id="S1"></span>List<br />Item Enlarge</p>
    23892407                <p id="_EnlargeP8">Test <span id="S2"></span>List<span id="E2"></span> <br /><br />Item Enlarge</p>
    23902408                <p id="_EnlargeP9">Test List <br /><span id="S3"></span><br />Item Enlarge</p>
    23912409                <p id="_EnlargeP10">Test List <br /><br />Item<span id="S4"></span> Enlarge</p>
     
    23932411                <div id="_EnlargeP12">Test<span id="S6"></span> Block <div>Enlarge</div></div>
    23942412                <div>Test <div id="_EnlargeP13">Blo<span id="S7"></span>ck</div> Enlarge</div>
    23952413                <p id="_EnlargeP14"><span id="S8"></span></p>
    2396                 <p id="_EnlargeP15">Test <span id="S9"></span>List<br/ >Item Enlarge</p>
     2414                <p id="_EnlargeP15">Test <span id="S9"></span>List<br />Item Enlarge</p>
    23972415                <p id="_EnlargeP16">Test <strong>Block<span id="S10"></span></strong><br /><br />Enlarge</p>
    2398                 <p id="_EnlargeP17"><span><span id="S11"></span>Test Block Enlarge<span id="E11"></span></span></p>
     2416                <p id="_EnlargeP17"><span><span id="S11"></span>Test Block Enlarge</span></p>
     2417                <div id="_EnlargeP18"><span>Test Block</span><span id="S12"></span><p> Enlarge</p></div>
    23992418                <p id="_trim_ct">Test trim</p>
    24002419        </div>
    24012420        <script type="text/javascript">
  • _source/core/dom/range.js

     
    11731173
    11741174                                        walker.guard = boundaryGuard;
    11751175
    1176                                         enlargeable = walker.lastBackward();
     1176                                        // Take the range end container if there's no
     1177                                        // nodes to enlarge( #4073 ).
     1178                                        enlargeable = walker.lastBackward() || walkerRange.endContainer;
    11771179
    11781180                                        // It's the body which stop the enlarging if no block boundary found.
    11791181                                        blockBoundary = blockBoundary || body;
    11801182
    11811183                                        // Start the range at different position by comparing
    11821184                                        // the document position of it with 'enlargeable' node.
    1183                                         this.setStartAt(
    1184                                                         blockBoundary,
     1185                                        this.setStartAt( blockBoundary,
    11851186                                                        !blockBoundary.is( 'br' ) &&
    1186                                                         ( !enlargeable || blockBoundary.contains( enlargeable ) ) ?
     1187                                                        ( blockBoundary.contains( enlargeable )
     1188                                                          || blockBoundary.equals( enlargeable ) ) ?
    11871189                                                                CKEDITOR.POSITION_AFTER_START :
    11881190                                                                CKEDITOR.POSITION_AFTER_END );
    11891191
     
    11991201                                        blockBoundary = null;
    12001202                                        // End the range right before the block boundary node.
    12011203
    1202                                         enlargeable = walker.lastForward();
     1204                                        // Take the range start container if there's no
     1205                                        // nodes to enlarge( #4073 ).
     1206                                        enlargeable = walker.lastForward() || walkerRange.startContainer;
    12031207
    12041208                                        // It's the body which stop the enlarging if no block boundary found.
    12051209                                        blockBoundary = blockBoundary || body;
    12061210
    12071211                                        // Start the range at different position by comparing
    12081212                                        // the document position of it with 'enlargeable' node.
    1209                                         this.setEndAt(
    1210                                                         blockBoundary,
     1213                                        this.setEndAt( blockBoundary,
    12111214                                                        !blockBoundary.is( 'br' ) &&
    1212                                                         ( !enlargeable || blockBoundary.contains( enlargeable ) ) ?
     1215                                                        ( blockBoundary.contains( enlargeable )
     1216                                                          || blockBoundary.equals( enlargeable ) ) ?
    12131217                                                                CKEDITOR.POSITION_BEFORE_END :
    12141218                                                                CKEDITOR.POSITION_BEFORE_START );
    12151219                                        // We must include the <br> at the end of range if there's
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy