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