Use isEqualForProperties in LinesComponent to decide when to re-measure

This commit is contained in:
Nathan Sobo
2014-04-15 15:58:44 -06:00
parent 1a56b487a1
commit 550a4ce906

View File

@@ -1,6 +1,6 @@
React = require 'react'
{div, span} = require 'reactionary'
{debounce, isEqual, multiplyString, pick} = require 'underscore-plus'
{debounce, isEqualForProperties, multiplyString} = require 'underscore-plus'
{$$} = require 'space-pen'
DummyLineNode = $$(-> @div className: 'line', style: 'position: absolute; visibility: hidden;', => @span 'x')[0]
@@ -27,13 +27,10 @@ LinesComponent = React.createClass
@updateModelDimensions()
componentDidUpdate: (prevProps) ->
@updateModelDimensions() unless @compareProps(prevProps, @props, 'fontSize', 'fontFamily', 'lineHeight')
@clearScopedCharWidths() unless @compareProps(prevProps, @props, 'fontSize', 'fontFamily')
@updateModelDimensions() unless isEqualForProperties(prevProps, @props, 'fontSize', 'fontFamily', 'lineHeight')
@clearScopedCharWidths() unless isEqualForProperties(prevProps, @props, 'fontSize', 'fontFamily')
@measureCharactersInNewLines()
compareProps: (a, b, whiteList...) ->
isEqual(pick(a, whiteList...), pick(b, whiteList...))
updateModelDimensions: ->
{editor} = @props
{lineHeightInPixels, charWidth} = @measureLineDimensions()