Selaa lähdekoodia

Blocking inline fillers on elements with contenteditable=false.

Szymon Kupś 8 vuotta sitten
vanhempi
commit
4f2128f257
1 muutettua tiedostoa jossa 20 lisäystä ja 0 poistoa
  1. 20 0
      packages/ckeditor5-engine/src/view/renderer.js

+ 20 - 0
packages/ckeditor5-engine/src/view/renderer.js

@@ -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' );
+}