Ticket #5591: 5591.patch

File 5591.patch, 1.3 KB (added by Garry Yao, 10 years ago)
  • _source/plugins/selection/plugin.js

     
    752752                                // node of the range.
    753753                                function()
    754754                                {
    755                                         var range  = self.getRanges()[ 0 ];
    756                                         range.shrink( CKEDITOR.SHRINK_ELEMENT );
    757 
    758                                         var enclosed;
    759                                         if ( range.startContainer.equals( range.endContainer )
    760                                                 && ( range.endOffset - range.startOffset ) == 1
    761                                                 && styleObjectElements[ ( enclosed = range.startContainer.getChild( range.startOffset ) ).getName() ] )
     755                                        var range  = self.getRanges()[ 0 ],
     756                                                        enclosed,
     757                                                        selected;
     758                                       
     759                                        // Check first any enclosed element, e.g. <ul>[<li><a href="#">item</a></li>]</ul>
     760                                        for ( var i = 2; i && !( ( enclosed = range.getEnclosedNode() )
     761                                                && ( enclosed.type == CKEDITOR.NODE_ELEMENT )
     762                                                && styleObjectElements[ enclosed.getName() ]
     763                                                && ( selected = enclosed ) ); i-- )
    762764                                        {
    763                                                 return enclosed.$;
     765                                                // Then check any deep wrapped element, e.g. [<b><i><img /></i></b>]
     766                                                range.shrink( CKEDITOR.SHRINK_ELEMENT );
    764767                                        }
     768                                       
     769                                        return  selected.$;
    765770                                });
    766771
    767772                        return cache.selectedElement = ( node ? new CKEDITOR.dom.element( node ) : null );
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy