From dbcce1f87b17b3cd29fb6971b44ba1ba2b4eb440 Mon Sep 17 00:00:00 2001 From: "m.lewandowski" Date: Thu, 25 Aug 2016 10:36:42 +0200 Subject: [PATCH] Fixed a case where updating link from a collapsed selection, would not end up with selection whole anchor. --- plugins/link/dialogs/link.js | 14 +++++++++----- tests/plugins/link/link.js | 2 +- tests/plugins/link/manual/editlinkdisplaytext.md | 1 + 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/plugins/link/dialogs/link.js b/plugins/link/dialogs/link.js index 5f35bcc2a00..82d6bc7387a 100755 --- a/plugins/link/dialogs/link.js +++ b/plugins/link/dialogs/link.js @@ -875,7 +875,8 @@ // We're only editing an existing link, so just overwrite the attributes. var element = this._.selectedElement, href = element.data( 'cke-saved-href' ), - textView = element.getHtml(); + textView = element.getHtml(), + newText; element.setAttributes( attributes.set ); element.removeAttributes( attributes.removed ); @@ -883,13 +884,16 @@ // Update text view when user changes protocol (#4612). if ( href == textView || data.type == 'email' && textView.indexOf( '@' ) != -1 ) { // Short mailto link text view (#5736). - element.setHtml( data.type == 'email' ? - data.email.address : attributes.set[ 'data-cke-saved-href' ] ); + newText = data.type == 'email' ? data.email.address : attributes.set[ 'data-cke-saved-href' ]; + } else if ( data.linkText && initialLinkText != data.linkText ) { + // Display text has been changed. + newText = data.linkText; + } + if ( newText ) { + element.setHtml( newText ); // We changed the content, so need to select it again. selection.selectElement( element ); - } else if ( data.linkText && initialLinkText != data.linkText ) { - element.setHtml( data.linkText ); } delete this._.selectedElement; diff --git a/tests/plugins/link/link.js b/tests/plugins/link/link.js index df00f6198b0..393967e62d2 100644 --- a/tests/plugins/link/link.js +++ b/tests/plugins/link/link.js @@ -171,7 +171,7 @@ assert.areSame( dialog.getValueOf( 'info', 'linkDisplayText' ), 'http://ckeditor.com' ); dialog.setValueOf( 'info', 'linkDisplayText', 'testing 1, 2, 3' ); dialog.getButton( 'ok' ).click(); - assert.areSame( 'testing 1, 2, 3', bot.getData( true ) ); + assert.areSame( '[testing 1, 2, 3]', bender.tools.getHtmlWithSelection( bot.editor ) ); } ); }, diff --git a/tests/plugins/link/manual/editlinkdisplaytext.md b/tests/plugins/link/manual/editlinkdisplaytext.md index df628154e7f..630ca4e03a8 100644 --- a/tests/plugins/link/manual/editlinkdisplaytext.md +++ b/tests/plugins/link/manual/editlinkdisplaytext.md @@ -10,6 +10,7 @@ * The Display Text input is not disabled. 1. Change Display Text input to "baz". 1. Click OK. + * The link should get selected, like so `foo [baz].` 1. Click Source button. **Expected:**