Esanders has uploaded a new change for review. https://gerrit.wikimedia.org/r/282464
Change subject: Prevent selection from spanning an active node ...................................................................... Prevent selection from spanning an active node This can happen when double clicking between paragraphs. Change-Id: I6d9b5f4781d5189df156f926d3c20f098eaba912 --- M src/ce/ve.ce.Surface.js 1 file changed, 21 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor refs/changes/64/282464/1 diff --git a/src/ce/ve.ce.Surface.js b/src/ce/ve.ce.Surface.js index 4283d8e..207386b 100644 --- a/src/ce/ve.ce.Surface.js +++ b/src/ce/ve.ce.Surface.js @@ -2626,6 +2626,27 @@ this.surfaceObserver.pollOnceNoCallback(); } + // Ensure we don't observe a selection that spans an active node + activeNode = this.getActiveNode(); + coveringRange = newSelection.getCoveringRange(); + if ( activeNode && coveringRange ) { + nodeRange = activeNode.getRange(); + // TODO: ranges[0] should be getCoveringRange from the selection (which doesn't exist yet) + containsStart = nodeRange.containsRange( new ve.Range( coveringRange.start ) ); + containsEnd = nodeRange.containsRange( new ve.Range( coveringRange.end ) ); + // If the range starts xor ends in the active node, but not both, then it must + // span an active node boundary, so fixup. + if ( containsStart ^ containsEnd ) { + newSelection = oldState && oldState.veRange ? + new ve.dm.LinearSelection( dmDoc, oldState.veRange ) : + new ve.dm.NullSelection( dmDoc ); + setTimeout( function () { + surface.changeModel( null, newSelection ); + surface .showModelSelection(); + } ); + } + } + // Firefox lets you create multiple selections within a single paragraph // which our model doesn't support, so detect and prevent these. // This shouldn't create problems with IME candidates as only an explicit user -- To view, visit https://gerrit.wikimedia.org/r/282464 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6d9b5f4781d5189df156f926d3c20f098eaba912 Gerrit-PatchSet: 1 Gerrit-Project: VisualEditor/VisualEditor Gerrit-Branch: master Gerrit-Owner: Esanders <esand...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits