Inez has uploaded a new change for review.
https://gerrit.wikimedia.org/r/63876
Change subject: Make ve.ce.ProtectedNode use setup (for setup) and teardown
(for teardown) events so it is going to work well after node is rewrapped
(example: MWBlockImageNode).
......................................................................
Make ve.ce.ProtectedNode use setup (for setup) and teardown (for teardown)
events so it is going to work well after node is rewrapped (example:
MWBlockImageNode).
Change-Id: Ibd539813f4302d8bbf8eaa35af71817a55fb1f4b
---
M modules/ve/ce/ve.ce.ProtectedNode.js
1 file changed, 40 insertions(+), 25 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor
refs/changes/76/63876/1
diff --git a/modules/ve/ce/ve.ce.ProtectedNode.js
b/modules/ve/ce/ve.ce.ProtectedNode.js
index cc8cacc..6e9e79d 100644
--- a/modules/ve/ce/ve.ce.ProtectedNode.js
+++ b/modules/ve/ce/ve.ce.ProtectedNode.js
@@ -19,8 +19,10 @@
this.$shields = $( [] );
// Events
- this.connect( this, { 'live': 'onProtectedLive' } );
- this.$.on( 'mouseenter', ve.bind( this.onProtectedMouseEnter, this ) );
+ this.connect( this, {
+ 'setup': 'onProtectedSetup',
+ 'teardown': 'onProtectedTeardown'
+ } );
// Initialization
this.$.addClass( 've-ce-protectedNode' );
@@ -57,39 +59,52 @@
/* Methods */
/**
- * Handle live events.
+ * Handle setup events.
*
* @method
*/
-ve.ce.ProtectedNode.prototype.onProtectedLive = function () {
+ve.ce.ProtectedNode.prototype.onProtectedSetup = function () {
var $shield,
node = this,
$shieldTemplate = this.constructor.static.$shieldTemplate,
surfaceModel = this.getRoot().getSurface().getModel();
- if ( this.isLive() ) {
- // Events
- surfaceModel.connect( this, { 'change': 'onSurfaceModelChange'
} );
+ // Events
+ this.$.on( 'mouseenter', ve.bind( this.onProtectedMouseEnter, this ) );
+ surfaceModel.connect( this, { 'change': 'onSurfaceModelChange' } );
- // Shields
- this.$.add( this.$.find( '*' ) ).each( function () {
- var $this = $( this );
- if ( this.nodeType === Node.ELEMENT_NODE ) {
- if (
- ( $this.css( 'float' ) === 'none' ||
$this.css( 'float' ) === '' ) &&
- !$this.hasClass( 've-ce-protectedNode' )
- ) {
- return;
- }
- $shield = $shieldTemplate.clone().appendTo(
$this );
- node.$shields = node.$shields.add( $shield );
+ // Shields
+ this.$.add( this.$.find( '*' ) ).each( function () {
+ var $this = $( this );
+ if ( this.nodeType === Node.ELEMENT_NODE ) {
+ if (
+ ( $this.css( 'float' ) === 'none' || $this.css(
'float' ) === '' ) &&
+ !$this.hasClass( 've-ce-protectedNode' )
+ ) {
+ return;
}
- } );
- } else {
- surfaceModel.disconnect( this, { 'change':
'onSurfaceModelChange' } );
- this.$shields.remove();
- this.$shields = $( [] );
- }
+ $shield = $shieldTemplate.clone().appendTo( $this );
+ node.$shields = node.$shields.add( $shield );
+ }
+ } );
+
+};
+
+/**
+ * Handle teardown events.
+ *
+ * @method
+ */
+ve.ce.ProtectedNode.prototype.onProtectedTeardown = function () {
+ var surfaceModel = this.getRoot().getSurface().getModel();
+
+ // Events
+ this.$.off( 'mouseenter' );
+ surfaceModel.disconnect( this, { 'change': 'onSurfaceModelChange' } );
+
+ // Shields
+ this.$shields.remove();
+ this.$shields = $( [] );
};
/**
--
To view, visit https://gerrit.wikimedia.org/r/63876
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibd539813f4302d8bbf8eaa35af71817a55fb1f4b
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Inez <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits