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