jenkins-bot has submitted this change and it was merged.

Change subject: Typing support after Aliens and Entities for IE
......................................................................


Typing support after Aliens and Entities for IE

When the cursor is between ce="false" elements and an editable next
sibling, IE often sets the anchorNode to be the ce="false" element
(or text node within). This change returns aliens to ce="false"
(abandoning the former true within true IE trick), and ensures that
the cursor is in the right place on keydown by programmatically
setting the selection.

Change-Id: I952488510f32b096b27e8e55d4afc7df930e0072
---
M modules/ve/ce/nodes/ve.ce.AlienNode.js
M modules/ve/ce/ve.ce.Surface.js
M modules/ve/ce/ve.ce.js
3 files changed, 30 insertions(+), 8 deletions(-)

Approvals:
  Inez: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/modules/ve/ce/nodes/ve.ce.AlienNode.js 
b/modules/ve/ce/nodes/ve.ce.AlienNode.js
index 4111a65..47d0c0e 100644
--- a/modules/ve/ce/nodes/ve.ce.AlienNode.js
+++ b/modules/ve/ce/nodes/ve.ce.AlienNode.js
@@ -19,10 +19,7 @@
 
        // DOM Changes
        this.$.addClass( 've-ce-alienNode' );
-
-       // ce="false" inside of ce="true" does not prevent editing in IE
-       // Strangely enough, ce="true" inside of ce="true" does.
-       this.$.attr( 'contenteditable', !!$.browser.msie );
+       this.$.attr( 'contenteditable', false );
 
        // Events
        this.model.addListenerMethod( this, 'update', 'onUpdate' );
diff --git a/modules/ve/ce/ve.ce.Surface.js b/modules/ve/ce/ve.ce.Surface.js
index 4471b36..9dd8bd2 100644
--- a/modules/ve/ce/ve.ce.Surface.js
+++ b/modules/ve/ce/ve.ce.Surface.js
@@ -259,14 +259,28 @@
  * @emits selectionStart
  */
 ve.ce.Surface.prototype.onDocumentKeyDown = function ( e ) {
+       var selection, prevNode;
+
        // Ignore keydowns while in IME mode but do not preventDefault them.
        if ( this.inIme === true ) {
                return;
        }
-       if ( $.browser.msie === true && e.which === 229 ) {
-               this.inIme = true;
-               this.handleInsertion();
-               return;
+       if ( $.browser.msie === true ) {
+               // Aliens/Entities
+               selection = this.model.getSelection();
+               if ( selection.start !== 0 && selection.isCollapsed() ) {
+                       prevNode = 
this.model.getDocument().getDocumentNode().getNodeFromOffset( selection.start - 
1 );
+                       if ( !prevNode.canHaveChildren() && 
!prevNode.canContainContent() ) {
+                               this.model.change( null, new ve.Range( 
selection.start ) );
+                       }
+               }
+
+               // IME
+               if ( e.which === 229 ) {
+                       this.inIme = true;
+                       this.handleInsertion();
+                       return;
+               }
        }
        if ( ve.ce.isArrowKey( e.keyCode ) ) {
                // Detect start of selecting using shift+arrow keys.
diff --git a/modules/ve/ce/ve.ce.js b/modules/ve/ce/ve.ce.js
index ab6644c..e551bf4 100644
--- a/modules/ve/ce/ve.ce.js
+++ b/modules/ve/ce/ve.ce.js
@@ -135,6 +135,11 @@
        );
        nodeModel = $node.data( 'node' ).getModel();
 
+       // IE sometimes puts the cursor in a text node inside ce="false". BAD!
+       if ( $node[0].contentEditable === 'false' ) {
+               return nodeModel.getOffset() + nodeModel.getOuterLength();
+       }
+
        if ( ! $node.hasClass( 've-ce-branchNode' ) ) {
                return nodeModel.getOffset();
        }
@@ -204,6 +209,12 @@
                }
        }
 
+       // IE sometimes puts the cursor in a text node inside ce="false". BAD!
+       if ( domNode.contentEditable === 'false' ) {
+               nodeModel = $domNode.data( 'node' ).getModel();
+               return nodeModel.getOffset() + nodeModel.getOuterLength();
+       }
+
        if ( domOffset === 0 ) {
                node = $domNode.data( 'node' );
                if ( node ) {

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I952488510f32b096b27e8e55d4afc7df930e0072
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Christian <[email protected]>
Gerrit-Reviewer: Inez <[email protected]>
Gerrit-Reviewer: jenkins-bot

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

Reply via email to