Fixed Issues:
- #12268: Cleanup of UI Color YUI styles. Thanks to CasherWest!
- #12263: Fixed: Paste from Word filter does not properly normalize semicolons style text. Thanks to Alin Purcaru!
- #12243: Fixed: Text formatting lost when pasting from Word. Thanks to Alin Purcaru!
-
#111739: Fixed:
keypress
listeners should not be used in the undo manager. A complete rewrite of keyboard handling in the undo manager was made. Numerous smaller issues were fixed, among others:-
#10926: [Chrome@Android] Fixed: Typing does not record snapshots and does not fire the
editor.change
event. -
#11611: [Firefox] Fixed: The
editor.change
event is fired when pressing Arrow keys. -
#12219: [Safari] Fixed: Some modifications of the
UndoManager.locked
property violate strict mode in the Undoplugin.
-
#10926: [Chrome@Android] Fixed: Typing does not record snapshots and does not fire the
- #10916: Fixed: Magic Line icon in Right-To-Left environments.
-
#11970: [IE] Fixed: CKEditor
paste
event is not fired when pasting with Shift+Ins. - #12111: Fixed: Linked image attributes are not read when opening the image dialog window by doubleclicking.
-
#10030: [IE] Fixed: Prevented "Unspecified Error" thrown in various cases when IE8-9 does not allow access to
document.activeElement
. - #12273: Fixed: Applying block style in a description list breaks it.
- #12218: Fixed: Minor syntax issue in CSS files.
- #12178: [Blink/WebKit] Fixed: Iterator does not return the block if the selection is located at the end of it.
- #12185: [IE9QM] Fixed: Error thrown when moving the mouse over focused editor's scrollbar.
- #12215: Fixed: Basepath resolution does not recognize semicolon as a query separator.
- #12135: Fixed: Remove Format does not work on widgets.
-
#12298: [IE11] Fixed: Clicking below
<body>
in Compatibility Mode will no longer reset selection to the first line. -
#12204: Fixed: Editor's voice label is not affected by
config.title
. - #11915: Fixed: With SCAYT enabled, cursor moves to the beginning of the first highlighted, misspelled word after typing or pasting into the editor.
- SCAYT: Fixed: Error thrown in the console after enabling SCAYT and trying to add a new image.
Other Changes:
-
#12296: Merged
benderjs-ckeditor
into the main CKEditor repository.
Security Updates:
- Fixed XSS vulnerability in the Preview plugin reported by Mario Heiderich of Cure53.
An upgrade is highly recommended!
New Features:
- #12164: Added the "Justify" option to the "Horizontal Alignment" drop-down in the Table Cell Properties dialog window.
Fixed Issues:
- #12110: Fixed: Editor crash after deleting a table. Thanks to Alin Purcaru!
- #11897: Fixed: Enter key used in an empty list item creates a new line instead of breaking the list. Thanks to noam-si!
- #12140: Fixed: Double-clicking linked widgets opens two dialog windows.
-
#12132: Fixed: Image is inserted with
width
andheight
styles even when they are not allowed. -
#9317: [IE] Fixed:
config.disableObjectResizing
does not work on IE. Note: We were not able to fix this issue on IE11+ because necessary events stopped working. See a last resort workaround and make sure to support our complaint to Microsoft. - #9638: Fixed: There should be no information about accessibility help available under the Alt+0 keyboard shortcut if theAccessibility Help plugin is not available.
-
#8117 and #9186: Fixed: In HTML5
<meta>
tags should be allowed everywhere, including inside the<body>
element. -
#10422: Fixed:
config.fillEmptyBlocks
not working properly if a function is specified.
Important Notes:
The CKEditor testing environment is now publicly available. CKEditor tests can be found in the tests/
directory. Read more about how to set up the environment and execute tests in the CKEditor Testing Environment guide.
Please note that the "tests
" folder is not available in release packages, it is available only in the development version of CKEditor available on GitHub.
New Features:
-
#11909: Introduced a parameter to prevent the
editor.setData()
method from recording undo snapshots.
Fixed Issues:
- #11757: Fixed: Imperfections in the Moono skin. Thanks to danyaPostfactum!
- #10091: Blockquote should be treated like an object by the styles system. Thanks to dan-james-deeson!
- #11478: Fixed: Issue with passing jQuery objects to adapter configuration.
- #10867: Fixed: Issue with setting encoded URI as image link.
-
#11983: Fixed: Clicking a nested widget does not focus it. Additionally, performance of the
widget.repository.getByElement()
method was improved. -
#12000: Fixed: Nested widgets should be initialized on
editor.setData()
andnestedEditable.setData()
. - #12022: Fixed: Outer widget's drag handler is not created at all if it has any nested widgets inside.
- #11960: [Blink/WebKit] Fixed: The caret should be scrolled into view on Backspace and Delete (covers only the merging blocks case).
- #11306: [OSX][Blink/WebKit] Fixed: No widget entries in the context menu on widget right-click.
- #11957: Fixed: Alignment labels in the Enhanced Image dialog window are not translated.
-
#11980: [Blink/WebKit] Fixed:
<span>
elements created when joining adjacent elements (non-collapsed selection). - #12009: [Nested widgets] Integration with the Magic Line plugin.
-
#11387: Fixed:
role="radiogroup"
should be applied only to radio inputs' container. - #7975: [IE8] Fixed: Errors when trying to select an empty table cell.
- #11947: [Firefox+IE11] Fixed: Shift+Enter in lists produces two line breaks.
-
#11972: Fixed: Feature detection in the
element.setText()
method should not trigger the layout engine. -
#7634: Fixed: The Flash Dialog plugin omits the
allowFullScreen
parameter in the editor data if set totrue
. -
#11910: Fixed: Enhanced Image does not take
config.baseHref
into account when updating image dimensions. -
#11753: Fixed: Wrong
checkDirty()
method value after focusing or blurring a widget. -
#11830: Fixed: Impossible to pass some arguments to CKBuilder when using the
/dev/builder/build.sh
script. - #11945: Fixed: Form Elements plugin should not change a core method.
-
#11384: [IE9+] Fixed:
IndexSizeError
thrown when pasting into a non-empty selection anchored in one text node.
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
dir
attribute 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
contenteditable
attribute 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
false
are 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.beforePaste
event 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 thecaption
class (<figure class="caption">
) will be filtered out unless theconfig.image2_captionedClass
option 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
allowedContent
andrequiredContent
properties 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.style
methods to ensure full compatibility with other features (e.g. applying styles to widgets requires that). We ensured backward compatibility though, so theCKEDITOR.style
will 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 —
type
andwidget
. 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.filter
to translate a style to allowed content rules.
- Introduced the
-
#11300: Various changes in the Enhanced Image plugin:
- Introduced the
config.image2_captionedClass
option to configure the class of captioned images. - Introduced the
config.image2_alignClasses
option 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.captionPlaceholder
string.
- 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.transparentImageData
property 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.status
property. - Introduced a new
forceUpdate
option for theeditor.lockSnapshot
event. - 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.