From ef1ec9b693e55e7585897cefe533e9f4cc3a22a5 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Fri, 20 Jun 2014 13:29:01 -0600 Subject: [PATCH] Emit events *after* update to prevent requesting update during an update When updating synchronously in specs, we can't get away with requesting an update before the previous update is completed. If we emit events before the update, we have the potential for one of those events to cause this to happen. Moving them to after is more correct anyway. --- src/editor-component.coffee | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/editor-component.coffee b/src/editor-component.coffee index d8d407c5c..e6ab32a33 100644 --- a/src/editor-component.coffee +++ b/src/editor-component.coffee @@ -180,18 +180,24 @@ EditorComponent = React.createClass @scrollViewMeasurementIntervalId = null componentWillUpdate: -> - if @props.editor.isAlive() - @props.parentView.trigger 'cursor:moved' if @cursorsMoved - @props.parentView.trigger 'selection:changed' if @selectionChanged componentDidUpdate: (prevProps, prevState) -> + cursorsMoved = @cursorsMoved + selectionChanged = @selectionChanged @pendingChanges.length = 0 + @cursorsMoved = false + @selectionChanged = false @refreshingScrollbars = false - @updateParentViewFocusedClassIfNeeded(prevState) + + if @props.editor.isAlive() + @updateParentViewFocusedClassIfNeeded(prevState) + @props.parentView.trigger 'cursor:moved' if cursorsMoved + @props.parentView.trigger 'selection:changed' if selectionChanged + @props.parentView.trigger 'editor:display-updated' + @measureScrollbars() if @measuringScrollbars @measureLineHeightAndCharWidthsIfNeeded(prevState) @remeasureCharacterWidthsIfNeeded(prevState) - @props.parentView.trigger 'editor:display-updated' requestUpdate: -> if @performSyncUpdates ? EditorComponent.performSyncUpdates