X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/b9166b62220208f49bfd3521e547d60d377ab7c1..73046626ddfd1cd23d0d4bdd904d1a7bae76c455:/src/redakcja/static/js/wiki/caret.js diff --git a/src/redakcja/static/js/wiki/caret.js b/src/redakcja/static/js/wiki/caret.js index 8b3cbd84..38848b09 100644 --- a/src/redakcja/static/js/wiki/caret.js +++ b/src/redakcja/static/js/wiki/caret.js @@ -28,12 +28,15 @@ class Caret { var selection = window.getSelection(); if (!selection.isCollapsed) return; + var anchorNode = selection.anchorNode; + // Is selection still inside a node? + if (!$(anchorNode).closest('[x-node]').length) return; self.singleClick = true; setTimeout(function() { if (self.singleClick) { self.element.insertBefore( - selection.anchorNode.splitText( + anchorNode.splitText( selection.anchorOffset ) ) @@ -148,10 +151,21 @@ class Caret { splitBlock() { let splitter = this.element; let parent, newParent, splitIndex, index; - + while (!splitter.is('div[x-node]')) { parent = splitter.parent(); splitIndex = parent.contents().index(splitter); + + if (parent.is('[x-annotation-box]')) { + // We're splitting inside an inline-style annotation. + // Convert into a block-style annotation now. + let p = $('
'); + parent.contents().appendTo(p); + parent.empty(); + parent.append(p); + parent = p; + } + newParent = parent.clone(); index = parent.contents().length - 1; while (index >= splitIndex) {