https://www.mediawiki.org/wiki/Special:Code/MediaWiki/113219

Revision: 113219
Author:   christian
Date:     2012-03-07 08:13:12 +0000 (Wed, 07 Mar 2012)
Log Message:
-----------
adding autoRender property to SurfaceView to enable/disable automatic rendering 
of view when model is updated

Modified Paths:
--------------
    trunk/extensions/VisualEditor/modules/ve/ce/ve.ce.Content.js
    trunk/extensions/VisualEditor/modules/ve/ce/ve.ce.LeafNode.js
    trunk/extensions/VisualEditor/modules/ve/ce/ve.ce.Surface.js

Modified: trunk/extensions/VisualEditor/modules/ve/ce/ve.ce.Content.js
===================================================================
--- trunk/extensions/VisualEditor/modules/ve/ce/ve.ce.Content.js        
2012-03-07 07:57:26 UTC (rev 113218)
+++ trunk/extensions/VisualEditor/modules/ve/ce/ve.ce.Content.js        
2012-03-07 08:13:12 UTC (rev 113219)
@@ -1,16 +1,22 @@
-ve.ce.Content = function( $container, model ) {
+ve.ce.Content = function( model, $container, parent ) {
        // Inheritance
        ve.EventEmitter.call( this );
 
        // Properties
        this.$ = $container;
        this.model = model;
+       this.parent = parent;
 
        if ( model ) {
                // Events
                var _this = this;
+               
                this.model.on( 'update', function( offset ) {
-                       //_this.render( offset || 0 );
+                       var surfaceView = _this.getSurfaceView();
+
+                       if (surfaceView.autoRender) {
+                               _this.render( offset || 0 );
+                       }
                } );
        }
 };
@@ -236,6 +242,14 @@
        return out;
 };
 
+ve.ce.Content.prototype.getSurfaceView = function() {
+       var view = this;
+       while(!view.surfaceView) {
+               view = view.parent;
+       }
+       return view.surfaceView;
+}
+
 /* Inheritance */
 
 ve.extendClass( ve.ce.Content, ve.EventEmitter );
\ No newline at end of file

Modified: trunk/extensions/VisualEditor/modules/ve/ce/ve.ce.LeafNode.js
===================================================================
--- trunk/extensions/VisualEditor/modules/ve/ce/ve.ce.LeafNode.js       
2012-03-07 07:57:26 UTC (rev 113218)
+++ trunk/extensions/VisualEditor/modules/ve/ce/ve.ce.LeafNode.js       
2012-03-07 08:13:12 UTC (rev 113219)
@@ -18,7 +18,7 @@
        this.$.addClass('ce-leafNode');
 
        // Properties
-       this.contentView = new ve.ce.Content( this.$, model );
+       this.contentView = new ve.ce.Content( model, this.$, this );
 
        // Events
        this.contentView.on( 'update', this.emitUpdate );

Modified: trunk/extensions/VisualEditor/modules/ve/ce/ve.ce.Surface.js
===================================================================
--- trunk/extensions/VisualEditor/modules/ve/ce/ve.ce.Surface.js        
2012-03-07 07:57:26 UTC (rev 113218)
+++ trunk/extensions/VisualEditor/modules/ve/ce/ve.ce.Surface.js        
2012-03-07 08:13:12 UTC (rev 113219)
@@ -24,6 +24,7 @@
                .append( this.documentView.$ );
        this.emitUpdateTimeout = undefined;
        this.clipboard = {};
+       this.autoRender = false;
 
        // Events
        this.documentView.$.bind( {
@@ -95,9 +96,11 @@
                var tx = this.model.getDocument().prepareContentAnnotation(
                        range, method, annotation
                );
+               
+               this.autoRender = true;         
                this.model.transact( tx );
-               // re-render Node
-               this.renderDomNode ( rangy.getSelection().anchorNode );
+               this.autoRender = false;
+                               
        } else {
                if ( method === 'set' ) {
                        this.addInsertionAnnotation( annotation );
@@ -160,16 +163,15 @@
        setTimeout( function() {
                var key = $('#paste').hide().text().replace( /\s/gm, '' );
 
-               if ( _this.clipboard[key] ) {
+               if ( _this.clipboard[key] ) {                   
                        // transact
                        var tx = _this.documentView.model.prepareInsertion(
                                insertionPoint, _this.clipboard[key]
                        );
+                       _this.autoRender = true;
                        _this.model.transact( tx );
+                       _this.autoRender = false;
 
-                       // re-render
-                       _this.getLeafNode( node ).data( 'view' 
).renderContent();
-
                        // clear the prev information from poll object 
(probably a better way to do this)
                        _this.poll.prevText =
                                _this.poll.prevHash =


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

Reply via email to