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

Reply via email to