|
|
@@ -381,6 +381,11 @@ export default class Renderer {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+ // Block adding inline filler inside elements with contenteditable=false.
|
|
|
+ if ( _isNotEditable( selectionParent ) ) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
// We have block filler, we do not need inline one.
|
|
|
if ( selectionOffset === selectionParent.getFillerOffset() ) {
|
|
|
return false;
|
|
|
@@ -708,3 +713,18 @@ export default class Renderer {
|
|
|
}
|
|
|
|
|
|
mix( Renderer, ObservableMixin );
|
|
|
+
|
|
|
+// Checks if contents inside provided element are not editable.
|
|
|
+//
|
|
|
+// @private
|
|
|
+// @param {module:engine/view/element~Element} element
|
|
|
+// @returns {Boolean}
|
|
|
+function _isNotEditable( element ) {
|
|
|
+ if ( element.getAttribute( 'contenteditable' ) === false ) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ const parent = element.findAncestor( element => element.hasAttribute( 'contenteditable' ) );
|
|
|
+
|
|
|
+ return parent && !parent.getAttribute( 'contenteditable' );
|
|
|
+}
|