New Features:
Fixed Issues:
- #11861: Fixed: [Webkit/Blink] Span elements created while joining adjacent elements. Note: This patch only covers cases when Backspace or Delete is pressed on a collapsed (empty) selection. The remaining case, with a non-empty selection, will be fixed in next release.
- #10714: Fixed: [iOS] Selection and drop-downs are broken if touch listener is used due to Webkit bug. Thanks to Arty Gus!
-
#11911: Fixed setting the
dirattribute for preloaded language in CKEDITOR.lang. Thanks to Akash Mohapatra! -
#11926: Fixed: Code snippet does not decode HTML entities when loading code from the
<code>element. - #11223: Fixed: Issue when Protected Source was not working in the title element.
- #11859: Fixed: Removed Source Dialog plugin from being required in Code Snippet sample.
- #11754: Fixed: Infinite loop in Google Chrome when content contains not closed attributes.
-
#11848: Fixed:
editor.insertElement()throwing an exception in IE when there was no selection in editor. - #11801: Fixed: Editor anchors unavailable when linking Enhanced Image widget.
- #11626: Fixed: Table Resize sets invalid width.
-
#11872: Made
element.addClass()chainable symmetrically toelement.removeClass(). - #11813: Fixed: Link lost while pasting captioned image and restoring undo snapshot (Enhanced Image).
- #11814: Fixed: Link and Unlink entries persistently displayed in Enhanced Image context menu.
- #11839: Fixed: [IE9] Caret jumps out of editable area when resizing editor in source mode.
- #11822: Fixed: [Webkit] Editing Anchors by double-click broken in some cases.
- #11823: Fixed: [IE8] Table Resize throws error over scrollbar.
- #11788: Fixed: It is not possible to change language back to Not set in Code Snippet dialog.
-
#11788: Fixed: Filter rules are not applied inside elements with
contenteditableattribute set totrue. - #11798: Fixed: Inserting non-editable element inside a table cell breaks the table badly.
- #11793: Fixed: Drop-down is not "on" when clicking it while editor is blurred.
-
#11850: Fixed: Fake objects with contenteditable set to
falseare not downcasted properly. - #11811: Fixed: Widget's data are not encoded correctly when passed to attribute.
- #11777: Fixed encoding ampersand in the Mathematical Formulas plugin.
- #11880: Fixed: [IE8-9] Linked image has a default thick border.
Other changes:
Important Notes:
- Marked the
editor.beforePasteevent as deprecated. - The default class of captioned images has changed to
image(was:caption). Please note that once edited in CKEditor 4.4+, all existing images of thecaptionclass (<figure class="caption">) will be filtered out unless theconfig.image2_captionedClassoption is set tocaption. For backward compatibility (i.e. when upgrading), it is highly recommended to use this setting, which also helps prevent CSS conflicts, etc. This does not apply to new CKEditor integrations. - Widgets without defined buttons are no longer registered automatically to the Advanced Content Filter. Before CKEditor 4.4 widgets were registered to the ACF which was an incorrect behavior (#11567). This change should not have any impact on standard scenarios, but if your button does not execute the widget command, you need to set
allowedContentandrequiredContentproperties for it manually, because the editor will not be able to find them. - The Show Borders plugin was added to the Standard installation package in order to ensure that unstyled tables are still visible for the user (#11665).
- Since CKEditor 4.4 the editor instance should be passed to
CKEDITOR.stylemethods to ensure full compatibility with other features (e.g. applying styles to widgets requires that). We ensured backward compatibility though, so theCKEDITOR.stylewill work even when the editor instance is not provided.
New Features:
-
#11297: Styles can now be applied to widgets. The definition of a style which can be applied to a specific widget must contain two additional properties —
typeandwidget. Read more in the Widget Styles section of the "Syles Drop-down" guide. Note that by default, widgets support only classes and no other attributes or styles. Related changes and features:- Introduced the
CKEDITOR.style.addCustomHandler()method for registering custom style handlers. - The
CKEDITOR.style.apply()andCKEDITOR.style.remove()methods are now called with an editor instance instead of the document so they can be reused by theCKEDITOR.editor.applyStyle()andCKEDITOR.editor.removeStyle()methods. Backward compatibility was preserved, but from CKEditor 4.4 it is highly recommended to pass an editor instead of a document to these methods. - Many new methods and properties were introduced in the Widget API to make the handling of styles by widgets fully customizable. See:
widget.definition.styleableElements,widget.definition.styleToAllowedContentRule,widget.addClass(),widget.removeClass(),widget.getClasses(),widget.hasClass(),widget.applyStyle(),widget.removeStyle(),widget.checkStyleActive(). - Integration with the Allowed Content Filter required an introduction of the
CKEDITOR.style.toAllowedContent()method which can be implemented by the custom style handler and if exists, it is used by theCKEDITOR.filterto translate a style to allowed content rules.
- Introduced the
-
#11300: Various changes in the Enhanced Image plugin:
- Introduced the
config.image2_captionedClassoption to configure the class of captioned images. - Introduced the
config.image2_alignClassesoption to configure the way images are aligned with CSS classes. If this setting is defined, the editor produces classes instead of inline styles for aligned images. - Default image caption can be translated (customized) with the
editor.lang.image2.captionPlaceholderstring.
- Introduced the
- #11341: Enhanced Image plugin: It is now possible to add a link to any image type.
- #10202: Introduced wildcard support in the Allowed Content Rules format.
- #10276: Introduced blacklisting in the Allowed Content Filter.
- #10480: Introduced code snippets with code highlighting. There are two versions available so far — the default Code Snippetwhich uses the highlight.js library and the Code Snippet GeSHi which uses the GeSHi library.
-
#11737: Introduced an option to prevent filtering of an element that matches custom criteria (see
filter.addElementCallback()). -
#11532: Introduced the
editor.addContentsCss()method that can be used for adding custom CSS files. -
#11536: Added the
CKEDITOR.tools.htmlDecode()method for decoding HTML entities. -
#11225: Introduced the
CKEDITOR.tools.transparentImageDataproperty which contains transparent image data to be used in CSS or as image source.
Other changes:
- #11377: Unified internal representation of empty anchors using the fake objects.
- #11422: Removed Firefox 3.x, Internet Explorer 6 and Opera 12.x leftovers in code.
-
#5217: Setting data (including switching between modes) creates a new undo snapshot. Besides that:
- Introduced the
editable.statusproperty. - Introduced a new
forceUpdateoption for theeditor.lockSnapshotevent. - Fixed: Selection not being unlocked in inline editor after setting data (#11500).
- Introduced the
- The WebSpellChecker plugin was updated to the latest version.
Fixed Issues:
-
#10190: Fixed: Removing block style with
editor.removeStyle()should result in a paragraph and not a div. - #11727: Fixed: The editor tries to select a non-editable image which was clicked.
New Features:
- Added new translation: Tatar.
Fixed Issues:
- #11677: Fixed: Undo/Redo keystrokes are blocked in the source mode.
- #11717: Document Properties plugin requires the Color Dialog plugin to work.
Fixed Issues:
- #11597: [IE11] Fixed: Error thrown when trying to open the preview using the keyboard.
-
#11544: Placeholders will no longer be upcasted in parents not accepting
<span>elements. -
#8663: Fixed
element.renameNode()not clearing theelement.getName()cache. - #11574: Fixed: Backspace destroying the DOM structure if an inline editable is placed in a list item.
- #11603: Fixed: Table Resize attaches to tables outside the editable.
-
#9205, #7805, #8216: Fixed:
{cke_protected_*}appearing in data in various cases where HTML comments are placed next to"or'. - #11635: Fixed: Some attributes are not protected before the content is passed through the fix bin.
- #11660: [IE] Fixed: Table content is lost when some extra markup is inside the table.
- #11641: Fixed: Switching between modes in the classic editor removes content styles for the inline editor.
- #11568: Fixed: Styles drop-down list is not enabled on selection change.
Fixed Issues:
-
#11500: [Webkit/Blink] Fixed: Selection lost when setting data in another inline editor. Additionally,
selection.removeAllRanges()is now scoped to selection's root. - #11104: [IE] Fixed: Various issues with scrolling and selection when focusing widgets.
-
#11487: Moving mouse over the Enhanced Image widget will no longer change the value returned by the
editor.checkDirty()method. - #8673: [WebKit] Fixed: Cannot select and remove the Page Break.
-
#11413: Fixed: Incorrect
editor.execCommand()behavior. - #11438: Splitting table cells vertically is no longer changing table structure.
- #8899: Fixed: Links in the About CKEditor dialog window now open in a new browser window or tab.
- #11490: Fixed: Menu button panel not showing in the source mode.
-
#11417: The
widget.doubleclickevent is not canceled anymore after editing was triggered. - #11253: [IE] Fixed: Clipped upload button in the Enhanced Image dialog window.
- #11359: Standardized the way anchors are discovered by the Link plugin.
- #11058: [IE8] Fixed: Error when deleting a table row.
-
#11508: Fixed:
htmlDataProcessordiscovering protected attributes within other attributes' values. - #11533: Widgets: Avoid recurring upcasts if the DOM structure was modified during an upcast.
-
#11400: Fixed: The
domObject.removeAllListeners()method does not remove custom listeners completely. -
#11493: Fixed: The
selection.getRanges()method does not override cached ranges when used with theonlyEditablesargument. - #11390: [IE] All XML plugin methods now work in IE10+.
- #11542: [IE11] Fixed: Blurry toolbar icons when Right-to-Left UI language is set.
-
#11504: Fixed: When
config.fullPageis set totrue, entities are not encoded in editor output. - #11004: Integrated Enhanced Image dialog window with Advanced Content Filter.
- #11439: Fixed: Properties get cloned in the Cell Properties dialog window if multiple cells are selected.