New Features:

  • #835: Extended support for pasting from external applications:
  • #3315: Added support for strikethrough in the BBCode plugin. Thanks to Alexander Kahl!
  • #3175: Introduced selection optimization mechanism for handling incorrect selection behaviors in various browsers:
    • #3256: Triple-clicking in the last table cell and deleting content no longer pulls the content below into the table.
    • #3118: Selecting a paragraph with a triple-click and applying a heading applies the heading only to the selected paragraph.
    • #3161: Double-clicking a <span> element containing just one word creates a correct selection including the clicked <span> only.
  • #3359: Improved dialog positioning and behavior when the dialog is resized or moved, or the browser window is resized.
  • #2227: Added the config.linkDefaultProtocol configuration option that allows setting the default URL protocol for the Link plugin dialog.
  • #3240: Extended the CKEDITOR.plugins.widget#mask property to allow masking only the specified part of a widget.
  • #3138: Added the possibility to use the widgetDefinition.getClipboardHtml() method to customize the widget HTML during copy, cut and drag operations.

Fixed Issues:

  • #808: Fixed: Widgets and other content disappear on drag and drop in read-only mode.
  • #3260: Fixed: Widget drag handler is visible in read-only mode.
  • #3261: Fixed: A widget initialized using the dialog has an incorrect owner document.
  • #3198: Fixed: Blurring and focusing the editor when a widget is focused creates an additional undo step.
  • #2859: [IE, Edge] Fixed: Various editor UI elements react to right mouse button click:
  • #3158: [Chrome, Safari] Fixed: Undo plugin breaks with the filling character.
  • #504: [Edge] Fixed: The editor's selection is collapsed to the beginning of the content when focusing the editor for the first time.
  • #3101: Fixed: CKEDITOR.dom.range#_getTableElement() returns null instead of a table element for edge cases.
  • #3287: Fixed: CKEDITOR.tools.promise initializes incorrectly if an AMD loader is present.
  • #3379: Fixed: Incorrect CKEDITOR.editor#getData() call when inserting content into the editor.
  • #941: Fixed: An error is thrown after styling a table cell text selected using the native selection when the Table Selection plugin is enabled.
  • #3136: [Firefox] Fixed: Clicking Balloon Toolbar items removes the native table selection.
  • #3381: [IE8] Fixed: The CKEDITOR.tools.object.keys() method does not accept non-objects.
  • #2395: [Android] Fixed: Focused input in a dialog is scrolled out of the viewport when the soft keyboard appears.
  • #453: Fixed: Link dialog has an invalid width when the editor is maximized and the browser window is resized.
  • #2138: Fixed: An email address containing a question mark is mishandled by the Link plugin.
  • #14613: Fixed: Race condition when loading plugins for an already destroyed editor instance throws an error.
  • #2257: Fixed: The editor throws an exception when destroyed shortly after it was created.
  • #3115: Fixed: Destroying the editor during the initialization throws an error.
  • #3354: [iOS] Fixed: Pasting no longer works on iOS version 13.
  • #3423 Fixed: Bookmarks can be created inside temporary elements.

API Changes:

Fixed Issues:

New Features:

Fixed Issues:

API Changes:

Other Changes:

Fixed Issues:

Other Changes:

  • Updated WebSpellChecker (WSC) and SpellCheckAsYouType (SCAYT) plugins:
    • Language dictionary update: German language was extended with over 600k new words.
    • Language dictionary update: Swedish language was extended with over 300k new words.
    • Grammar support added for Australian and New Zealand English, Polish, Slovak, Slovenian and Austrian languages.
    • Changed wavy red and green lines that underline spelling and grammar errors to straight ones.
    • #55: Fixed: WSC does not use CKEDITOR.getUrl() when referencing style sheets.
    • #166: Fixed: SCAYT does not use CKEDITOR.getUrl() when referencing style sheets.
    • #56: [Chrome] Fixed: SCAYT/WSC throws errors when running inside a Chrome extension.
    • Fixed: After removing a dictionary, the words are not underlined and considered as incorrect.
    • Fixed: The Slovenian (sl_SL) language does not work.
    • Fixed: Quotes with code U+2019 (Right single quotation mark) are considered separators.
    • Fixed: Wrong error message formatting when the service ID is invalid.
    • Fixed: Absent languages in the Languages tab when using SCAYT with the Shared Spaces plugin.

Fixed Issues:

  • #2721#487: Fixed: The order of sublist items is reversed when a higher level list item is removed.
  • #2527: Fixed: Emoji autocomplete order does not prioritize emojis with the name starting from the used string.
  • #2572: Fixed: Icons in the Emoji dropdown navigation groups are not centered.
  • #1191: Fixed: Items in the elements path are draggable.
  • #2292: Fixed: Dropping a list with a link on the editor's margin causes a console error and removes the dragged text from editor.
  • #2756: Fixed: The Auto Link plugin causes an error when typing in the source editing mode.
  • #1986: Fixed: The Cell Properties dialog from the Table Tools plugin shows styles that are not allowed through config.allowedContent.
  • #2565: [IE, Edge] Fixed: Buttons in the editor toolbar are activated by clicking them with the right mouse button.
  • #2792: Fixed: A bug in the Copy Formatting plugin that caused the following issues:
    • #2780: Fixed: Undo steps disappear after multiple changes of selection.
    • #2470: [Firefox] Fixed: Widget's nested editable gets blurred upon focus.
    • #2655: [Chrome, Safari] Fixed: Widget's nested editable cannot be focused under certain circumstances.

Fixed Issues:

  • #2403: Fixed: Styling inline editor initialized inside a table with the Table Selection plugin is causing style leaks.
  • #2514: Fixed: Pasting table data into inline editor initialized inside a table with the Table Selection plugin inserts pasted content into the wrapping table.
  • #2451: Fixed: The Remove Format plugin changes selection.
  • #2546: Fixed: The separator in the toolbar moves when buttons are focused.
  • #2506: Fixed: Enhanced Image throws a type error when an empty <figure> tag with an image class is upcasted.
  • #2650: Fixed: Table dialog validator fails when the getValue()function is defined in the global scope.
  • #2690: Fixed: Decimal characters are removed from the inside of numbered lists when pasting content using the Paste from Word plugin.
  • #2205: Fixed: It is not possible to add new list items under an item containing a block element.
  • #2411#2438 Fixed: Apply numbered list option throws a console error for a specific markup.
  • #2430 Fixed: Color Button and List Block items are draggable.

Other Changes:

  • Updated the WebSpellChecker (WSC) plugin:
    • #52 Fixed: Clicking "Finish Checking" without a prior action would hang the Spell Checking dialog.
  • #2603: Corrected the GPL license entry in the package.json file.

Fixed Issues:

  • #2571: Fixed: Clicking the categories in the Emoji dropdown panel scrolls the entire page.

Security Updates:

  • Fixed XSS vulnerability in the HTML parser reported by maxarr.

    Issue summary: It was possible to execute XSS inside CKEditor after persuading the victim to: (i) switch CKEditor to source mode, then (ii) paste a specially crafted HTML code, prepared by the attacker, into the opened CKEditor source area, and (iii) switch back to WYSIWYG mode.

An upgrade is highly recommended!

New Features:

  • #2062: Added the emoji dropdown that allows the user to choose the emoji from the toolbar and search for them using keywords.
  • #2154: The Link plugin now supports phone number links.
  • #1815: The Auto Link plugin supports typing link completion.
  • #2478Link can be inserted using the Ctrl/Cmd + K keystroke.
  • #651: Text pasted using the Paste from Word plugin preserves indentation in paragraphs.
  • #2248: Added support for justification in the BBCode plugin. Thanks to Matěj Kmínek!
  • #706: Added a different cursor style when selecting cells for the Table Selection plugin.
  • #2072: The UI Button plugin supports custom aria-haspopup property values. The Menu Button aria-haspopupvalue is now menu, the Panel Button and Rich Combo aria-haspopup value is now listbox.
  • #1176: The Balloon Panel can now be attached to a selection instead of an element.
  • #2202: Added the contextmenu_contentsCss configuration option to allow adding custom CSS to the Context Menu.

Fixed Issues:

  • #1477: Fixed: On destroy, Balloon Toolbar does not destroy its content.
  • #2394: Fixed: Emoji dropdown does not show up with repeated symbols in a single line.
  • #1181: [Chrome] Fixed: Opening the context menu in a read-only editor results in an error.
  • #2276: [iOS] Fixed: Button state does not refresh properly.
  • #1489: Fixed: Table contents can be removed in read-only mode when the Table Selection plugin is used.
  • #1264 Fixed: Right-click does not clear the selection created with the Table Selection plugin.
  • #586 Fixed: The required attribute is not correctly recognized by the Form Elements plugin dialog. Thanks to Roli Züger!
  • #2380 Fixed: Styling HTML comments in a top-level element results in extra paragraphs.
  • #2294 Fixed: Pasting content from Microsoft Outlook and then bolding it results in an error.
  • #2035 [Edge] Fixed: Permission denied is thrown when opening a Panel instance.
  • #965 Fixed: The config.forceSimpleAmpersand option does not work. Thanks to Alex Maris!
  • #2448: Fixed: The [Escape HTML Entities] plugin with custom additional entities configuration breaks HTML escaping.
  • #898: Fixed: Enhanced Image long alternative text protrudes into the editor when the image is selected.
  • #1113: [Firefox] Fixed: Nested contenteditable elements path is not updated on focus with the Div Editing Area plugin.
  • #1682 Fixed: Hovering the Balloon Toolbar panel changes its size, causing flickering.
  • #421 Fixed: Expandable Button puts the (Selected) text at the end of the label when clicked.
  • #1454: Fixed: The onAbort method of the Upload Widget is not called when the loader is aborted.
  • #1451: Fixed: The context menu is incorrectly positioned when opened with Shift+F10.
  • #1722CKEDITOR.filter.instances is causing memory leaks.
  • #2491: Fixed: The Mentions plugin is not matching diacritic characters.
  • #2519: Fixed: The Accessibility Help dialog should display all available keystrokes for a single command.

API Changes:

Other Changes:

  • #1713: Removed the redundant lang.title entry from the Clipboard plugin.

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 objectembedparam are removed from the editor content.

API Changes:

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:

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.
Twitter Facebook Facebook Instagram Medium Linkedin GitHub Arrow down Phone Menu Close icon Check