Esanders has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/160034

Change subject: Emit more position events
......................................................................

Emit more position events

Emit position events after
* Model transaction updates
* Slug expansion (as well as collapse)

Now Focusable/ResizeableNode can just listen to 'position'.

Change-Id: I98e0559a993620f057e6036bfd8f6a21bf59e788
---
M src/ce/ve.ce.FocusableNode.js
M src/ce/ve.ce.ResizableNode.js
M src/ce/ve.ce.Surface.js
M src/ce/ve.ce.SurfaceObserver.js
4 files changed, 19 insertions(+), 17 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor 
refs/changes/34/160034/1

diff --git a/src/ce/ve.ce.FocusableNode.js b/src/ce/ve.ce.FocusableNode.js
index 4d2eb87..6e795f9 100644
--- a/src/ce/ve.ce.FocusableNode.js
+++ b/src/ce/ve.ce.FocusableNode.js
@@ -361,7 +361,6 @@
                        'mouseout.ve-ce-focusableNode': ve.bind( 
this.onSurfaceMouseOut, this )
                } );
        }
-       this.surface.getModel().getDocument().connect( this, { transact: 
'positionHighlights' } );
        this.surface.connect( this, { position: 'positionHighlights' } );
 };
 
@@ -376,7 +375,6 @@
        }
        this.$highlights.remove().empty();
        this.surface.$element.off( '.ve-ce-focusableNode' );
-       this.surface.getModel().getDocument().disconnect( this, { transact: 
'positionHighlights' } );
        this.surface.disconnect( this, { position: 'positionHighlights' } );
        this.highlighted = false;
        this.boundingRect = null;
diff --git a/src/ce/ve.ce.ResizableNode.js b/src/ce/ve.ce.ResizableNode.js
index fd11d73..dfcdf44 100644
--- a/src/ce/ve.ce.ResizableNode.js
+++ b/src/ce/ve.ce.ResizableNode.js
@@ -210,14 +210,13 @@
  * @method
  */
 ve.ce.ResizableNode.prototype.onResizableFocus = function () {
-       var surface = this.getRoot().getSurface(),
-               documentModel = surface.getModel().getDocument();
+       var surface = this.getRoot().getSurface();
 
        if ( this.$sizeLabel ) {
                // Attach the size label first so it doesn't mask the resize 
handles
-               this.$sizeLabel.appendTo( 
this.root.getSurface().getSurface().$controls );
+               this.$sizeLabel.appendTo( surface.getSurface().$controls );
        }
-       this.$resizeHandles.appendTo( 
this.root.getSurface().getSurface().$controls );
+       this.$resizeHandles.appendTo( surface.getSurface().$controls );
 
        // Call getScalable to pre-fetch the extended data
        this.model.getScalable();
@@ -244,7 +243,6 @@
                        ve.bind( this.onResizeHandlesCornerMouseDown, this )
                );
 
-       documentModel.connect( this, { transact: 
'setResizableHandlesSizeAndPosition' } );
        surface.connect( this, { position: 'setResizableHandlesSizeAndPosition' 
} );
 
 };
@@ -260,15 +258,13 @@
                return;
        }
 
-       var surface = this.getRoot().getSurface(),
-               documentModel = surface.getModel().getDocument();
+       var surface = this.getRoot().getSurface();
 
        this.$resizeHandles.detach();
        if ( this.$sizeLabel ) {
                this.$sizeLabel.detach();
        }
 
-       documentModel.disconnect( this, { transact: 
'setResizableHandlesSizeAndPosition' } );
        surface.disconnect( this, { position: 
'setResizableHandlesSizeAndPosition' } );
 
 };
diff --git a/src/ce/ve.ce.Surface.js b/src/ce/ve.ce.Surface.js
index 3e8e2e7..96a444f 100644
--- a/src/ce/ve.ce.Surface.js
+++ b/src/ce/ve.ce.Surface.js
@@ -1556,6 +1556,7 @@
        }
        // Update the state of the SurfaceObserver
        this.surfaceObserver.pollOnceNoEmit();
+       this.emit( 'position' );
 };
 
 /**
diff --git a/src/ce/ve.ce.SurfaceObserver.js b/src/ce/ve.ce.SurfaceObserver.js
index deee9ed..797e63d 100644
--- a/src/ce/ve.ce.SurfaceObserver.js
+++ b/src/ce/ve.ce.SurfaceObserver.js
@@ -174,7 +174,9 @@
  * @fires selectionChange
  */
 ve.ce.SurfaceObserver.prototype.pollOnceInternal = function ( emitChanges ) {
-       var $nodeOrSlug, node, text, hash, range, domRange, $slugWrapper, 
observer = this;
+       var $nodeOrSlug, node, text, hash, range, domRange, $slugWrapper,
+               slugChange = false,
+               observer = this;
 
        if ( !this.domDocument ) {
                return;
@@ -207,18 +209,23 @@
                                .addClass( 
've-ce-branchNode-blockSlugWrapper-unfocused' )
                                .removeClass( 
've-ce-branchNode-blockSlugWrapper-focused' );
                        this.$slugWrapper = null;
-                       // Emit 'position' on the surface view after the 
animation completes
-                       this.setTimeout( function () {
-                               if ( observer.documentView ) {
-                                       
observer.documentView.documentNode.surface.emit( 'position' );
-                               }
-                       }, 200 );
+                       slugChange = true;
                }
 
                if ( $slugWrapper && !$slugWrapper.is( this.$slugWrapper) ) {
                        this.$slugWrapper = $slugWrapper
                                .addClass( 
've-ce-branchNode-blockSlugWrapper-focused' )
                                .removeClass( 
've-ce-branchNode-blockSlugWrapper-unfocused' );
+                       slugChange = true;
+               }
+
+               if ( slugChange ) {
+                       // Emit 'position' on the surface view after the 
animation completes
+                       this.setTimeout( function () {
+                               if ( observer.documentView ) {
+                                       
observer.documentView.documentNode.surface.emit( 'position' );
+                               }
+                       }, 200 );
                }
 
        }

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I98e0559a993620f057e6036bfd8f6a21bf59e788
Gerrit-PatchSet: 1
Gerrit-Project: VisualEditor/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <esand...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to