Esanders has uploaded a new change for review.

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

Change subject: Prevent clicks on focusable nodes in tables
......................................................................

Prevent clicks on focusable nodes in tables

Before processing a click on a focusable node or rendering a highlight
make sure that it has a ce=true parent.

Change-Id: I0802440d9f9eeacd687d7d1ca890ebca7785aef1
---
M demos/ve/pages/tables.html
M src/ce/ve.ce.FocusableNode.js
M src/ce/ve.ce.View.js
3 files changed, 21 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor 
refs/changes/46/170346/1

diff --git a/demos/ve/pages/tables.html b/demos/ve/pages/tables.html
index bd86101..630679e 100644
--- a/demos/ve/pages/tables.html
+++ b/demos/ve/pages/tables.html
@@ -130,7 +130,7 @@
   </tr>
   <tr>
     <td colspan="8">
-      libero, quis tincidunt nisi vulputate non. In lobortis erat sed enim 
semper blandit. Suspendisse vehicula, sapien nec egestas euismod, lacus ligula 
condimentum nisl, sit amet ornare lorem ex sed velit. Integer diam elit, 
dignissim sed mi vitae, dictum consectetur erat. Donec sollicitudin iaculis 
ante, sit amet elementum ex feugiat a.
+      libero, quis tincidunt nisi vulputate non. In <a href="foo">lobortis</a> 
erat sed enim semper blandit. Suspendisse vehicula, <!-- inline comment --> 
sapien nec egestas euismod, lacus ligula condimentum nisl, sit amet ornare 
lorem ex sed velit. <span rel="ve:Alien">Integer diam elit, dignissim sed 
mi</span> vitae, dictum consectetur erat. Donec sollicitudin iaculis ante, sit 
amet elementum ex feugiat a.
     </td>
   </tr>
   <tr>
diff --git a/src/ce/ve.ce.FocusableNode.js b/src/ce/ve.ce.FocusableNode.js
index 5b6362e..59b7f0e 100644
--- a/src/ce/ve.ce.FocusableNode.js
+++ b/src/ce/ve.ce.FocusableNode.js
@@ -156,6 +156,9 @@
                selection = surfaceModel.getSelection(),
                nodeRange = this.model.getOuterRange();
 
+       if ( !this.isInContentEditable() ) {
+               return;
+       }
        // Wait for native selection to change before correcting
        setTimeout( function () {
                range = selection instanceof ve.dm.LinearSelection && 
selection.getRange();
@@ -176,6 +179,9 @@
  * @param {jQuery.Event} e Double click event
  */
 ve.ce.FocusableNode.prototype.onFocusableDblClick = function () {
+       if ( !this.isInContentEditable() ) {
+               return;
+       }
        this.executeCommand();
 };
 
@@ -232,7 +238,7 @@
  * @param {jQuery.Event} e Mouse enter event
  */
 ve.ce.FocusableNode.prototype.onFocusableMouseEnter = function () {
-       if ( !this.root.getSurface().dragging && 
!this.root.getSurface().resizing ) {
+       if ( !this.root.getSurface().dragging && 
!this.root.getSurface().resizing && this.isInContentEditable() ) {
                this.createHighlights();
        }
 };
diff --git a/src/ce/ve.ce.View.js b/src/ce/ve.ce.View.js
index 1972b7a..2d96539 100644
--- a/src/ce/ve.ce.View.js
+++ b/src/ce/ve.ce.View.js
@@ -153,6 +153,19 @@
 };
 
 /**
+ * Check if the node is inside a contentEditable node
+ *
+ * @return {boolean} Node is inside a contentEditable node
+ */
+ve.ce.View.prototype.isInContentEditable = function () {
+       var node = this.$element[0].parentNode;
+       while ( node && node.contentEditable === 'inherit' ) {
+               node = node.parentNode;
+       }
+       return !!( node && node.contentEditable === 'true' );
+};
+
+/**
  * Render an HTML attribute list onto this.$element
  *
  * If no attributeList is given, the attribute list stored in the linear model 
will be used.

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

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

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

Reply via email to