/**\r
- * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.\r
+ * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\r
* For licensing, see LICENSE.md or http://ckeditor.com/license\r
*/\r
\r
} ), 'cke_anchor', 'anchor' );\r
}\r
\r
+\r
+ function getSelectedAnchor( selection ) {\r
+ var range = selection.getRanges()[ 0 ],\r
+ element = selection.getSelectedElement();\r
+\r
+ // In case of table cell selection, we want to shrink selection from td to a element.\r
+ range.shrink( CKEDITOR.SHRINK_ELEMENT );\r
+ element = range.getEnclosedNode();\r
+\r
+ if ( element && element.type === CKEDITOR.NODE_ELEMENT &&\r
+ ( element.data( 'cke-real-element-type' ) === 'anchor' || element.is( 'a' ) ) ) {\r
+ return element;\r
+ }\r
+ }\r
+\r
return {\r
title: editor.lang.link.anchor.title,\r
minWidth: 300,\r
var newFake = createFakeAnchor( editor, attributes );\r
newFake.replace( this._.selectedElement );\r
\r
- // Selecting fake element for IE. (#11377)\r
- if ( CKEDITOR.env.ie )\r
+ // Selecting fake element for IE. (http://dev.ckeditor.com/ticket/11377)\r
+ if ( CKEDITOR.env.ie ) {\r
editor.getSelection().selectElement( newFake );\r
+ }\r
} else {\r
this._.selectedElement.setAttributes( attributes );\r
}\r
// Apply style.\r
var style = new CKEDITOR.style( { element: 'a', attributes: attributes } );\r
style.type = CKEDITOR.STYLE_INLINE;\r
- editor.applyStyle( style );\r
+ style.applyToRange( range );\r
}\r
}\r
},\r
\r
onShow: function() {\r
var sel = editor.getSelection(),\r
- fullySelected = sel.getSelectedElement(),\r
+ fullySelected = getSelectedAnchor( sel ),\r
fakeSelected = fullySelected && fullySelected.data( 'cke-realelement' ),\r
linkElement = fakeSelected ?\r
CKEDITOR.plugins.link.tryRestoreFakeAnchor( editor, fullySelected ) :\r
loadElements.call( this, linkElement );\r
!fakeSelected && sel.selectElement( linkElement );\r
\r
- if ( fullySelected )\r
+ if ( fullySelected ) {\r
this._.selectedElement = fullySelected;\r
+ }\r
}\r
\r
this.getContentElement( 'info', 'txtName' ).focus();\r