fix(messages): fix jumping message list on draft focus

We were erroneously jumping to an individual message when you focused on
it.
This commit is contained in:
Evan Morikawa 2016-02-15 16:34:23 -05:00
parent d80edbf7f3
commit 60f7290564
2 changed files with 12 additions and 9 deletions

View file

@ -272,7 +272,7 @@ class ComposerEditor extends Component {
value={this.props.body}
onChange={this.props.onBodyChanged}
onFilePaste={this.props.onFilePaste}
onSelectionChanged={this._ensureSelectionVisible}
onSelectionRestored={this._ensureSelectionVisible}
initialSelectionSnapshot={this.props.initialSelectionSnapshot}
extensions={[this._coreExtension].concat(this.state.extensions)} />
);

View file

@ -63,7 +63,7 @@ class Contenteditable extends React.Component
extensions: []
spellcheck: true
floatingToolbar: true
onSelectionChanged: =>
onSelectionRestored: =>
coreServices: [MouseService, ClipboardService]
@ -153,7 +153,9 @@ class Contenteditable extends React.Component
previousExportedSelection: @innerState.exportedSelection
componentDidUpdate: =>
@_restoreSelection() if @_shouldRestoreSelectionOnUpdate()
if @_shouldRestoreSelectionOnUpdate()
@_restoreSelection()
@_notifyOfSelectionRestoration()
@_refreshServices()
@_mutationObserver.disconnect()
@_mutationObserver.observe(@_editableNode(), @_mutationConfig())
@ -533,9 +535,15 @@ class Contenteditable extends React.Component
selection = new ExtendedSelection(@_editableNode())
selection.importSelection(@innerState.exportedSelection)
if selection.isInScope()
@_onSelectionChanged(selection)
# The bounding client rect has changed
@setInnerState editableNode: @_editableNode()
@_setupNonMutationListeners()
_notifyOfSelectionRestoration: =>
selection = new ExtendedSelection(@_editableNode())
if selection.isInScope()
@props.onSelectionRestored(selection, @_editableNode())
# When the component updates, the selection may have changed from our
# last known saved position. This can happen for a couple of reasons:
#
@ -547,9 +555,4 @@ class Contenteditable extends React.Component
(document.activeElement is @_editableNode() or
not @_editableNode().parentNode.contains(document.activeElement))
_onSelectionChanged: (selection) ->
@props.onSelectionChanged(selection, @_editableNode())
# The bounding client rect has changed
@setInnerState editableNode: @_editableNode()
module.exports = Contenteditable