Ticket #7728: 7728.patch

File 7728.patch, 2.0 KB (added by Garry Yao, 9 years ago)
  • _source/plugins/link/plugin.js

     
    6868
    6969                editor.on( 'doubleclick', function( evt )
    7070                        {
    71                                 var element = CKEDITOR.plugins.link.getSelectedLink( editor ) || evt.data.element;
     71                                var element;
     72                                var openDialog;
    7273
    73                                 if ( !element.isReadOnly() )
    74                                 {
    75                                         if ( element.is( 'a' ) )
    76                                                 evt.data.dialog =  ( element.getAttribute( 'name' ) && !element.getAttribute( 'href' ) ) ? 'anchor' : 'link';
    77                                         else if ( element.is( 'img' ) && element.data( 'cke-real-element-type' ) == 'anchor' )
    78                                                 evt.data.dialog = 'anchor';
    79                                 }
     74                                // Fake anchor image or empty anchor.
     75                                if ( ( element = evt.data.element )
     76                                                && ( element.is( 'img' ) && element.data( 'cke-real-element-type' ) == 'anchor'
     77                                                        || element.is( 'a' ) && !element.getChildCount() ) )
     78                                {
     79                                                openDialog = 1;
     80                                }
     81                                // Link text is fully selected only (#7728).
     82                                else
     83                                {
     84                                        var range = editor.getSelection().getRanges()[ 0 ];
     85                                        range.shrink( CKEDITOR.SHRINK_TEXT );
     86                                        element = range.getCommonAncestor().getAscendant( 'a', 1 );
     87                                        if ( element && range.checkBoundaryOfElement( element, CKEDITOR.START )
     88                                                        && range.checkBoundaryOfElement( element, CKEDITOR.END ) )
     89                                        {
     90                                                openDialog = 1;
     91                                        }
     92                                }
     93
     94                                if ( openDialog )
     95                                {
     96                                        if ( !element.isReadOnly() )
     97                                        {
     98                                                if ( element.is( 'a' ) )
     99                                                {
     100                                                        evt.data.dialog = ( element.getAttribute( 'name' ) && ( !element.getAttribute( 'href' ) || !element.getChildCount() ) ) ? 'anchor' : 'link';
     101                                                        editor.getSelection().selectElement( element );
     102                                                }
     103                                                else if ( element.is( 'img' ) && element.data( 'cke-real-element-type' ) == 'anchor' )
     104                                                        evt.data.dialog = 'anchor';
     105                                        }
     106                                }
     107
    80108                        });
    81109
    82110                // If the "menu" plugin is loaded, register the menu items.
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy