Fixed Issues:
-
#2114: Fixed: Autocomplete cannot be initialized before
instanceReady
. - #2107: Fixed: Holding and releasing the mouse button is not inserting an autocomplete suggestion.
- #2167: Fixed: Matching in Emoji plugin is not case insensitive.
- #2195: Fixed: Emoji shows the suggestion box when the colon is preceded with other characters than white space.
- #2169: [Edge] Fixed: Error thrown when pasting into the editor.
- #1084 Fixed: Using the "Automatic" option with Color Button on a text with the color already defined sets an invalid color value.
- #2271: Fixed: Custom color name not used as a label in the Color Button plugin. Thanks to Eric Geloen!
- #2296: Fixed: Color Button throws an error when activated on a content containing HTML comments.
-
#966: Fixed: Executing
editor.destroy()
during the file upload throws an error. Thanks to Maksim Makarevich! - #1719: Fixed: Ctrl/Cmd + A inadvertently focuses inline editor if it is starting and ending with a list. Thanks to theNailz!
-
#1046: Fixed: Subsequent new links do not include the
id
attribute. Thanks to Nathan Samson! - #1348: Fixed: Enhanced Image plugin aspect ratio locking uses an old width and height on image URL change.
- #1791: Fixed: Image and Enhanced Image plugins can be enabled when Easy Image is present.
- #2254: Fixed: Image ratio locking is too precise for resized images. Thanks to Jonathan Gilbert!
- #1184: [IE8-11] Fixed: Copying and pasting data in read-only mode throws an error.
- #1916: [IE9-11] Fixed: Pressing the Delete key in read-only mode throws an error.
- #2003: [Firefox] Fixed: Right-clicking multiple selected table cells containing empty paragraphs removes the selection.
- #1816: Fixed: Table breaks when Enter is pressed over the Table Selection plugin.
-
#1115: Fixed: The
<font>
tag is not preserved when proper configuration is provided and a style is applied by the Font plugin. - #727: Fixed: Custom styles may be invisible in the Styles Combo plugin.
-
#988: Fixed: ACF-enabled custom elements prefixed with
object
,embed
,param
are removed from the editor content.
API Changes:
-
#2249: Added the
editor.plugins.detectConflict()
method finding conflicts between provided plugins.
New Features:
-
#1751: Introduced the Autocomplete feature that consists of the following plugins:
- Autocomplete – Provides contextual completion feature for custom text matches based on user input.
- Text Watcher – Checks whether an editor's text change matches the chosen criteria.
-
Text Match – Allows to search
CKEDITOR.dom.range
for matching text.
- #1703: Introduced the Mentions plugin providing smart completion feature for custom text matches based on user input starting with a chosen marker character.
- #1746: Introduced the Emoji plugin providing completion feature for emoji ideograms.
- #1761: The Auto Link plugin now supports email links.
Fixed Issues:
- #1458: [Edge] Fixed: After blurring the editor it takes 2 clicks to focus a widget.
- #1034: Fixed: JAWS leaves forms mode after pressing the Enter key in an inline editor instance.
-
#1748: Fixed: Missing
CKEDITOR.dialog.definition.onHide
API documentation. Thanks to sunnyone! -
#1321: Ideographic space character (
\u3000
) is lost when pasting text. - #1776: Empty caption placeholder of the Image Base plugin is not hidden when blurred.
- #1592: The Image Base plugin caption is not visible after paste.
-
#620: Fixed: The
config.forcePasteAsPlainText
option is not respected in internal and cross-editor pasting. - #1467: Fixed: The resizing cursor of the Table Resize plugin appearing in the middle of a merged cell.
API Changes:
-
#850: Backward incompatibility: Replaced the
replace
dialog from the Find / Replace plugin with atabId
option in thefind
command. -
#1582: The
CKEDITOR.editor.addCommand()
method can now accept aCKEDITOR.command
instance as a parameter. -
#1712: The
extraPlugins
,removePlugins
andplugins
configuration options allow whitespace. -
#1802: The
extraPlugins
,removePlugins
andplugins
configuration options allow passing plugin names as an array. -
#1724: Added an option to the
getClientRect()
function allowing to retrieve an absolute bounding rectangle of the element, i.e. a position relative to the upper-left corner of the topmost viewport. -
#1498 : Added a new
getClientRects()
method toCKEDITOR.dom.range
. It returns a list of rectangles for each selected element. -
#1993: Added the
CKEDITOR.tools.throttle()
function.
Other Changes:
- Updated SCAYT (Spell Check As You Type) and WebSpellChecker (WSC) plugins:
- Language dictionary update: Added support for the Uzbek Latin language.
- Languages no longer supported as additional languages: Manx - Isle of Man (
gv_GB
) and Interlingua (ia_XR
). - Extended and improved language dictionaries: Georgian and Swedish. Also added the missing word "Ensure" to the American, British and Canada English language.
- #141 Fixed: SCAYT throws "Uncaught Error: Error in RangyWrappedRange module: createRange(): Parameter must be a Window object or DOM node".
- #153 [Chrome] Fixed: Correcting a word in the widget in SCAYT moves focus to another editable.
- #155 [IE8] Fixed: SCAYT throws an error and does not work.
- #156 [IE10] Fixed: SCAYT does not seem to work.
- Fixed: After some text is dragged and dropped, the markup is not refreshed for grammar problems in SCAYT.
- Fixed: Request to FastCGI fails when the user tries to replace a word with non-English characters with a proper suggestion in WSC.
- [Firefox] Fixed: Ctrl+Z removes focus in SCAYT.
- Grammar support for default languages was improved.
- New application source URL was added in SCAYT.
- Removed green marks and legend related to grammar-supported languages in the Languages tab of SCAYT. Grammar is now supported for almost all the anguages in the list for an additional fee.
- Fixed: JavaScript error in the console: "Cannot read property 'split' of undefined" in SCAYT and WSC.
- [IE10] Fixed: Markup is not set for a specific case in SCAYT.
- Fixed: Accessibility issue: No
alt
attribute for the logo image in the About tab of SCAYT.
Security Updates:
-
Fixed XSS vulnerability in the Enhanced Image (
image2
) plugin reported by Kyaw Min Thein.Issue summary: It was possible to execute XSS inside CKEditor using the
<img>
tag and specially crafted HTML. Please note that the default presets (Basic/Standard/Full) do not include this plugin, so you are only at risk if you made a custom build and enabled this plugin.
Fixed Issues:
- #1835: Fixed: Integration between CKFinder and File Browser plugin does not work.
New Features:
- #932: Introduced Easy Image feature for inserting images that are automatically rescaled, optimized, responsive and delivered through a blazing-fast CDN. Three new plugins were added to support it:
- #1338: Keystroke labels are displayed for function keys (like F7, F8).
-
#643: The File Browser plugin can now upload files using XHR requests. This allows for setting custom HTTP headers using the
config.fileTools_requestHeaders
configuration option. - #1365: The File Browser plugin uses XHR requests by default.
-
#1399: Added the possibility to set
CKEDITOR.config.startupFocus
asstart
orend
to specify where the editor focus should be after the initialization. -
#1441: The Magic Line plugin line element can now be identified by the
data-cke-magic-line="1"
attribute.
Fixed Issues:
- #595: Fixed: Pasting does not work on mobile devices.
- #869: Fixed: Empty selection clears cached clipboard data in the editor.
- #1419: Fixed: The Widget Selection plugin selects the editor content with the Alt+A key combination on Windows.
-
#1274: Fixed: Balloon Toolbar does not match a single selected image using the
contextDefinition.cssSelector
matcher. - #1232: Fixed: Balloon Toolbar buttons should be registered as focusable elements.
-
#1342: Fixed: Balloon Toolbar should be re-positioned after the
change
event. - #1426: [IE8-9] Fixed: Missing Balloon Toolbar background in the Kama skin. Thanks to Christian Elmer!
- #1470: Fixed: Balloon Toolbar is not visible after drag and drop of a widget it is attached to.
- #1048: Fixed: Balloon Panel is not positioned properly when a margin is added to its non-static parent.
- #889: Fixed: Unclear error message for width and height fields in the Image and Enhanced Image plugins.
- #859: Fixed: Cannot edit a link after a double-click on the text in the link.
-
#1013: Fixed: Paste from Word does not work correctly with the
config.forcePasteAsPlainText
option. - #1356: Fixed: Border parse function does not allow spaces in the color value.
-
#1010: Fixed: The CSS
border
shorthand property was incorrectly expanded ignoring theborder-color
style. - #1535: Fixed: Widget mouseover border contrast is insufficient.
- #1516: Fixed: Fake selection allows removing content in read-only mode using the Backspace and Delete keys.
- #1570: Fixed: Fake selection allows cutting content in read-only mode using the Ctrl/Cmd + X keys.
- #1363: Fixed: Paste notification is unclear and it might confuse users.
API Changes:
-
#1346: Balloon Toolbar context manager API is now available in the
pluginDefinition.init
method of the requiringplugin. - #1530: Added the possibility to use custom icons for buttons.
Other Changes:
- Updated SCAYT (Spell Check As You Type) and WebSpellChecker plugins:
- SCAYT
scayt_minWordLength
configuration option now defaults to 3 instead of 4. - SCAYT default number of suggested words in the context menu changed to 3.
- #90: Fixed: Selection is lost on link creation if SCAYT highlights the word.
- Fixed: SCAYT crashes when the browser
localStorage
is disabled. - [IE11] Fixed:
Unable to get property type of undefined or null reference
error in the browser console when SCAYT is disabled/enabled. - #46: Fixed: Editing is blocked when remote spell checker server is offline.
- Fixed: User Dictionary cannot be created in WSC due to
You already have the dictionary
error. - Fixed: Words with apostrophe
'
on the replacement make the WSC dialog inaccessible. - Fixed: SCAYT/WSC causes the
Uncaught TypeError
error in the browser console.
- SCAYT
- #1337: Updated the samples layout with the new CKEditor 4 logo and color scheme.
- #1591: CKBuilder and language tools are now downloaded over HTTPS. Thanks to August Detlefsen!