jenkins-bot has submitted this change and it was merged.

Change subject: Update VE implementation to use model-only inpsectors
......................................................................


Update VE implementation to use model-only inpsectors

As we can't access the view node we have to use stagin transactions
to apply changes to the real document node.

In all cases we can now bypass the parent teardown method as the
model has already been updated.

Depends on If1250402f266 being pulled through to the VE extension.

Bug: 63785
Change-Id: Ic42db8531a5119e8454fb26c80565cef656d3a80
---
M modules/VisualEditor/ve.ui.MWMathInspector.js
1 file changed, 23 insertions(+), 19 deletions(-)

Approvals:
  Catrope: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/modules/VisualEditor/ve.ui.MWMathInspector.js 
b/modules/VisualEditor/ve.ui.MWMathInspector.js
index 7d0a198..ac62041 100644
--- a/modules/VisualEditor/ve.ui.MWMathInspector.js
+++ b/modules/VisualEditor/ve.ui.MWMathInspector.js
@@ -14,12 +14,11 @@
  * @extends ve.ui.MWExtensionInspector
  *
  * @constructor
- * @param {ve.ui.WindowSet} windowSet Window set this inspector is part of
  * @param {Object} [config] Configuration options
  */
-ve.ui.MWMathInspector = function VeUiMWMathInspector( windowSet, config ) {
+ve.ui.MWMathInspector = function VeUiMWMathInspector( config ) {
        // Parent constructor
-       ve.ui.MWExtensionInspector.call( this, windowSet, config );
+       ve.ui.MWExtensionInspector.call( this, config );
 
        this.onChangeHandler = ve.debounce( ve.bind( this.updatePreview, this 
), 250 );
 };
@@ -46,9 +45,13 @@
  * Update the math node rendering to reflect the content entered into the 
inspector.
  */
 ve.ui.MWMathInspector.prototype.updatePreview = function () {
-       var newsrc = this.input.getValue();
+       var mwData = ve.copy( this.node.getAttribute( 'mw' ) ),
+               newsrc = this.input.getValue();
+
+       mwData.body.extsrc = newsrc;
+
        if ( this.visible ) {
-               this.node.update( { 'extsrc': newsrc } );
+               this.getFragment().changeAttributes( { 'mw': mwData } );
        }
 };
 
@@ -59,28 +62,30 @@
        // Parent method
        ve.ui.MWExtensionInspector.prototype.setup.call( this, data );
 
-       var mw, surfaceModel = this.surface.getModel();
+       this.getFragment().getSurface().pushStaging();
 
-       this.node = this.surface.getView().getFocusedNode();
-       if ( !this.node ) {
+       var mwData;
+
+       this.node = this.getFragment().getSelectedNode();
+       if ( !this.node || !( this.node instanceof ve.dm.MWMathNode ) ) {
                // Create a dummy node, needed for live preview
-               mw = {
+               mwData = {
                        'name': 'math',
                        'attrs': {},
                        'body': {
                                'extsrc': ''
                        }
                };
-               surfaceModel.getFragment().collapseRangeToEnd().insertContent( [
+               this.getFragment().collapseRangeToEnd().insertContent( [
                        {
                                'type': 'mwMath',
                                'attributes': {
-                                       'mw': mw
+                                       'mw': mwData
                                }
                        },
                        { 'type': '/mwMath' }
                ] );
-               this.node = this.surface.getView().getFocusedNode();
+               this.node = this.getFragment().getSelectedNode();
        }
 
        this.input.on( 'change', this.onChangeHandler );
@@ -95,21 +100,20 @@
  */
 ve.ui.MWMathInspector.prototype.teardown = function ( data ) {
        var newsrc = this.input.getValue(),
-               surfaceModel = this.surface.getModel();
+               surfaceModel = this.getFragment().getSurface();
 
        this.input.off( 'change', this.onChangeHandler );
 
-       if ( newsrc !== '' ) {
-               // Parent method
-               ve.ui.MWExtensionInspector.prototype.teardown.call( this, data 
);
-       } else {
+       this.getFragment().getSurface().applyStaging();
+
+       if ( newsrc === '' ) {
                // The user tried to empty the node, remove it
                surfaceModel.change( ve.dm.Transaction.newFromRemoval(
                        surfaceModel.getDocument(), this.node.getOuterRange()
                ) );
-               // Grandparent method; we're overriding the parent behavior in 
this case
-               ve.ui.Inspector.prototype.teardown.call( this, data );
        }
+       // Grandparent method; we're overriding the parent behavior with 
applyStaging
+       ve.ui.Inspector.prototype.teardown.call( this, data );
 };
 
 /* Registration */

-- 
To view, visit https://gerrit.wikimedia.org/r/126909
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic42db8531a5119e8454fb26c80565cef656d3a80
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Math
Gerrit-Branch: wmf/1.23wmf22
Gerrit-Owner: Catrope <[email protected]>
Gerrit-Reviewer: Catrope <[email protected]>
Gerrit-Reviewer: Esanders <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to