Divec has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/179530

Change subject: Readonly selection handling
......................................................................

Readonly selection handling

Create a collapsed selection directly in handleLinearUpOrDownArrowKey, instead
of inserting, selecting and removing a $cursorHolder span. The original purpose
of the insertion technique seems to have been to give a non-collapsed selection
for the native action to work on, then delete the superfluous content
afterwards. However, since Ifd5000fc5e667cb9fd6db0e97cf8a03b4da45553 we have
been deleting the $cursorHolder *before* the native action, so the native
action acts on a collapsed selection in any case.

Change-Id: If507cc2bcc363c1d637409dfa191942c967a7c59
---
M src/ce/ve.ce.Surface.js
1 file changed, 5 insertions(+), 19 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor 
refs/changes/30/179530/1

diff --git a/src/ce/ve.ce.Surface.js b/src/ce/ve.ce.Surface.js
index 9bad070..3ae489c 100644
--- a/src/ce/ve.ce.Surface.js
+++ b/src/ce/ve.ce.Surface.js
@@ -2527,7 +2527,7 @@
  * @param {jQuery.Event} e Up or down key down event
  */
 ve.ce.Surface.prototype.handleLinearUpOrDownArrowKey = function ( e ) {
-       var nativeRange, slug, $cursorHolder, endNode, endOffset,
+       var nativeRange, slug, endNode, endOffset,
                range = this.model.getSelection().getRange(),
                tableEditingRange = this.getActiveTableNode() ? 
this.getActiveTableNode().getEditingRange() : null,
                direction = e.keyCode === OO.ui.Keys.DOWN ? 1 : -1,
@@ -2569,30 +2569,16 @@
                                endNode = this.nativeSelection.focusNode;
                                endOffset = this.nativeSelection.focusOffset;
                        }
-                       $cursorHolder = this.$( '<span 
class="ve-ce-surface-cursorHolder"> </span>' ).hide();
-                       if ( endNode.nodeType === Node.TEXT_NODE ) {
-                               endNode.splitText( endOffset );
-                       }
-                       endNode.parentNode.insertBefore(
-                               $cursorHolder[0],
-                               endNode.nextSibling
-                       );
                }
        }
-       if ( $cursorHolder || slug ) {
+       if ( endNode || slug ) {
                nativeRange = this.getElementDocument().createRange();
-               nativeRange.selectNode( $cursorHolder ? $cursorHolder[0] : slug 
);
+               nativeRange.setStart( endNode, endOffset );
+               nativeRange.setEnd( endNode, endOffset );
                this.nativeSelection.removeAllRanges();
                this.nativeSelection.addRange( nativeRange );
        }
-       if ( $cursorHolder ) {
-               $cursorHolder.remove();
-               this.surfaceObserver.clear();
-       }
-       // If we did text node splitting, try and patch things up
-       if ( endNode && endNode.nodeType === Node.TEXT_NODE ) {
-               ve.normalizeNode( endNode.parentNode );
-       }
+
        setTimeout( function () {
                var viewNode, newRange;
                // Chrome bug lets you cursor into a multi-line 
contentEditable=false with up/down...

-- 
To view, visit https://gerrit.wikimedia.org/r/179530
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: If507cc2bcc363c1d637409dfa191942c967a7c59
Gerrit-PatchSet: 1
Gerrit-Project: VisualEditor/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Divec <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to