jenkins-bot has submitted this change and it was merged.
Change subject: Replace renderingEnabled toggle with lock counter
......................................................................
Replace renderingEnabled toggle with lock counter
modules/ve/ce/ve.ce.Surface.js
* remove methods enableRendering/disableRendering/isRenderingEnabled
* add methods incRenderLock/decRenderLock/isRenderingLocked
* Consequential method call changes
* try-finally blocks around incRenderLock/decRenderLock pairs
modules/ve/ce/ve.ce.ContentBranchNode.js
* Consequential method call changes
Change-Id: Icb71bf536c7bad3a6c0c6512a2efb9565b5bd086
---
M modules/ve/ce/ve.ce.ContentBranchNode.js
M modules/ve/ce/ve.ce.Surface.js
2 files changed, 53 insertions(+), 38 deletions(-)
Approvals:
Catrope: Looks good to me, approved
jenkins-bot: Verified
diff --git a/modules/ve/ce/ve.ce.ContentBranchNode.js
b/modules/ve/ce/ve.ce.ContentBranchNode.js
index 06d864c..fb1aaa1 100644
--- a/modules/ve/ce/ve.ce.ContentBranchNode.js
+++ b/modules/ve/ce/ve.ce.ContentBranchNode.js
@@ -158,7 +158,10 @@
*/
ve.ce.ContentBranchNode.prototype.renderContents = function () {
var i, len, node, rendered;
- if ( this.root instanceof ve.ce.DocumentNode &&
!this.root.getSurface().isRenderingEnabled() ) {
+ if (
+ this.root instanceof ve.ce.DocumentNode &&
+ this.root.getSurface().isRenderingLocked()
+ ) {
return;
}
diff --git a/modules/ve/ce/ve.ce.Surface.js b/modules/ve/ce/ve.ce.Surface.js
index 357597f..327ff09 100644
--- a/modules/ve/ce/ve.ce.Surface.js
+++ b/modules/ve/ce/ve.ce.Surface.js
@@ -36,7 +36,7 @@
this.keyPressTimeout = null;
this.$document = $( this.getElementDocument() );
this.clipboard = {};
- this.renderingEnabled = true;
+ this.renderLocks = 0;
this.dragging = false;
this.relocating = false;
this.selecting = false;
@@ -827,7 +827,7 @@
}
}
// If there is no focused node, use native selection
- if ( !this.focusedNode && this.isRenderingEnabled() ) {
+ if ( !this.focusedNode && !this.isRenderingLocked() ) {
this.showSelection( selection );
}
}
@@ -847,9 +847,12 @@
// Ignore when the newRange is just a flipped oldRange
return;
}
- this.disableRendering();
- this.model.change( null, newRange );
- this.enableRendering();
+ this.incRenderLock();
+ try {
+ this.model.change( null, newRange );
+ } finally {
+ this.decRenderLock();
+ }
};
/**
@@ -913,14 +916,17 @@
if ( annotations instanceof ve.dm.AnnotationSet ) {
ve.dm.Document.addAnnotationsToData( data,
this.model.getInsertionAnnotations() );
}
- this.disableRendering();
- this.model.change(
- ve.dm.Transaction.newFromInsertion(
- this.documentView.model,
previous.range.start, data
- ),
- next.range
- );
- this.enableRendering();
+ this.incRenderLock();
+ try {
+ this.model.change(
+ ve.dm.Transaction.newFromInsertion(
+ this.documentView.model,
previous.range.start, data
+ ),
+ next.range
+ );
+ } finally {
+ this.decRenderLock();
+ }
return;
}
@@ -931,12 +937,16 @@
} else {
range = new ve.Range( next.range.start,
previous.range.start );
}
- this.disableRendering();
- this.model.change(
- ve.dm.Transaction.newFromRemoval(
this.documentView.model, range ),
- next.range
- );
- this.enableRendering();
+ this.incRenderLock();
+ try {
+ this.model.change(
+ ve.dm.Transaction.newFromRemoval(
this.documentView.model,
+ range ),
+ next.range
+ );
+ } finally {
+ this.decRenderLock();
+ }
return;
}
}
@@ -990,13 +1000,15 @@
if ( newRange.isCollapsed() ) {
newRange = new ve.Range( this.getNearestCorrectOffset(
newRange.start, 1 ) );
}
+
if ( data.length > 0 ) {
- this.model.change(
- ve.dm.Transaction.newFromInsertion(
- this.documentView.model, nodeOffset + 1 +
fromLeft, data
- ),
- newRange
- );
+ this.model.change(
+ ve.dm.Transaction.newFromInsertion(
+ this.documentView.model, nodeOffset + 1
+ fromLeft,
+ data
+ ),
+ newRange
+ );
}
if ( fromLeft + fromRight < previousData.length ) {
this.model.change(
@@ -1004,7 +1016,8 @@
this.documentView.model,
new ve.Range(
data.length + nodeOffset + 1 + fromLeft,
- data.length + nodeOffset + 1 +
previousData.length - fromRight
+ data.length + nodeOffset + 1 +
+ previousData.length - fromRight
)
),
newRange
@@ -1091,7 +1104,6 @@
( e.altKey === true || e.ctrlKey === true ) ? 'word' :
'character',
e.shiftKey
);
-
this.model.change( null, range );
this.surfaceObserver.start( false, true );
};
@@ -1647,31 +1659,31 @@
};
/**
- * Check if rendering is enabled.
+ * Check whether there are any render locks
*
* @method
- * @returns {boolean} Render is enabled
+ * @returns {boolean} Render is locked
*/
-ve.ce.Surface.prototype.isRenderingEnabled = function () {
- return this.renderingEnabled;
+ve.ce.Surface.prototype.isRenderingLocked = function () {
+ return this.renderLocks > 0;
};
/**
- * Enable rendering.
+ * Add a single render lock (to disable rendering)
*
* @method
*/
-ve.ce.Surface.prototype.enableRendering = function () {
- this.renderingEnabled = true;
+ve.ce.Surface.prototype.incRenderLock = function () {
+ this.renderLocks++;
};
/**
- * Disable rendering.
+ * Remove a single render lock
*
* @method
*/
-ve.ce.Surface.prototype.disableRendering = function () {
- this.renderingEnabled = false;
+ve.ce.Surface.prototype.decRenderLock = function () {
+ this.renderLocks--;
};
/**
--
To view, visit https://gerrit.wikimedia.org/r/82756
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Icb71bf536c7bad3a6c0c6512a2efb9565b5bd086
Gerrit-PatchSet: 6
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Divec <[email protected]>
Gerrit-Reviewer: Catrope <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits