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