Christian has uploaded a new change for review.

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


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(+), 5 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor 
refs/changes/14/56514/1

diff --git a/modules/ve/ce/nodes/ve.ce.AlienNode.js 
b/modules/ve/ce/nodes/ve.ce.AlienNode.js
index 4111a65..08240e6 100644
--- a/modules/ve/ce/nodes/ve.ce.AlienNode.js
+++ b/modules/ve/ce/nodes/ve.ce.AlienNode.js
@@ -22,7 +22,7 @@
 
        // 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..87cefae 100644
--- a/modules/ve/ce/ve.ce.Surface.js
+++ b/modules/ve/ce/ve.ce.Surface.js
@@ -263,10 +263,24 @@
        if ( this.inIme === true ) {
                return;
        }
-       if ( $.browser.msie === true && e.which === 229 ) {
-               this.inIme = true;
-               this.handleInsertion();
-               return;
+       if ( $.browser.msie === true ) {
+               // Aliens/Entities
+               var selection = this.model.getSelection(),
+                   prevNode = 
this.model.getDocument().getDocumentNode().getNodeFromOffset( selection.start - 
1 );
+
+               if (prevNode.type == 'text' ) {
+                       prevNode = prevNode.getParent();
+               }
+               if ( !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: newchange
Gerrit-Change-Id: I952488510f32b096b27e8e55d4afc7df930e0072
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Christian <[email protected]>

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

Reply via email to