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

Reply via email to