Christian has uploaded a new change for review.

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


Change subject: Prevent IE from editing ce="false"
......................................................................

Prevent IE from editing ce="false"

This is a redux of logic already in master.
Moved from keydown to keypress because IE
fires keydown multiple times for held keys.
Changed the logic to determine that the current
offset is just after an element that should not be
directly edited.

Change-Id: I5206d8919abde740d92f636b0c8618c4ebb6f6ff
---
M modules/ve/ce/ve.ce.Surface.js
1 file changed, 23 insertions(+), 17 deletions(-)


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

diff --git a/modules/ve/ce/ve.ce.Surface.js b/modules/ve/ce/ve.ce.Surface.js
index afd2143..75eb836 100644
--- a/modules/ve/ce/ve.ce.Surface.js
+++ b/modules/ve/ce/ve.ce.Surface.js
@@ -277,29 +277,18 @@
  * @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 ) {
-               // 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;
-               }
+       // IME
+       if ( $.browser.msie === true && e.which === 229 ) {
+               this.inIme = true;
+               this.handleInsertion();
+               return;
        }
+
        if ( ve.ce.isArrowKey( e.keyCode ) ) {
                // Detect start of selecting using shift+arrow keys.
                if ( !this.dragging && !this.selecting && e.shiftKey ) {
@@ -339,6 +328,23 @@
  * @param {jQuery.Event} e Key press event
  */
 ve.ce.Surface.prototype.onDocumentKeyPress = function ( e ) {
+       var selection, prevNode, documentModel = this.model.getDocument();
+
+       // Prevent IE from editing Aliens/Entities
+       if ( $.browser.msie === true ) {
+               selection = this.model.getSelection();
+               if ( selection.start !== 0 && selection.isCollapsed() ) {
+                       prevNode = 
documentModel.getDocumentNode().getNodeFromOffset( selection.start - 1 );
+                       if (
+                               !this.documentView.getSlugAtOffset( 
selection.start ) &&
+                               prevNode.isContent() &&
+                               documentModel.data.isCloseElementData( 
selection.start - 1 )
+                       ) {
+                               this.model.change( null, new ve.Range( 
selection.start ) );
+                       }
+               }
+       }
+
        if ( ve.ce.isShortcutKey( e ) ||
                e.which === ve.Keys.DOM_VK_RETURN ||
                e.which === ve.Keys.DOM_VK_BACK_SPACE ||

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5206d8919abde740d92f636b0c8618c4ebb6f6ff
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