From 1b026cc805ad464b71228e620a0218b08e7a7981 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Wed, 11 Jun 2014 08:37:16 -0600 Subject: [PATCH 1/2] Set is-focused class on React editor's wrapper view for now --- spec/editor-component-spec.coffee | 2 ++ src/editor-component.coffee | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/spec/editor-component-spec.coffee b/spec/editor-component-spec.coffee index 6f3f6eb1f..b9cd3e3a0 100644 --- a/spec/editor-component-spec.coffee +++ b/spec/editor-component-spec.coffee @@ -918,8 +918,10 @@ describe "EditorComponent", -> expect(document.activeElement).toBe document.body inputNode.focus() expect(node.classList.contains('is-focused')).toBe true + expect(wrapperView.hasClass('is-focused')).toBe true inputNode.blur() expect(node.classList.contains('is-focused')).toBe false + expect(wrapperView.hasClass('is-focused')).toBe false describe "selection handling", -> cursor = null diff --git a/src/editor-component.coffee b/src/editor-component.coffee index b2801017c..b46a1dc5e 100644 --- a/src/editor-component.coffee +++ b/src/editor-component.coffee @@ -170,6 +170,7 @@ EditorComponent = React.createClass componentDidUpdate: (prevProps, prevState) -> @pendingChanges.length = 0 @refreshingScrollbars = false + @updateParentViewFocusedClassIfNeeded(prevState) @measureScrollbars() if @measuringScrollbars @measureLineHeightAndCharWidthsIfNeeded(prevState) @pauseOverflowChangedEvents() @@ -784,3 +785,7 @@ EditorComponent = React.createClass top = clientY - scrollViewClientRect.top + editor.getScrollTop() left = clientX - scrollViewClientRect.left + editor.getScrollLeft() {top, left} + + updateParentViewFocusedClassIfNeeded: (prevState) -> + if prevState.focused isnt @state.focused + @props.parentView.toggleClass('is-focused', @props.focused) From 99611fad34da093b3128a787e4cee20b20ef3cf9 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Wed, 11 Jun 2014 08:51:19 -0600 Subject: [PATCH 2/2] Give React editor lines and line numbers an opaque background This ensures subpixel antialiasing works correctly. It was previously present on both of these components but got dropped accidentally. --- src/gutter-component.coffee | 2 +- src/lines-component.coffee | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gutter-component.coffee b/src/gutter-component.coffee index 87f96dd76..a4c249b58 100644 --- a/src/gutter-component.coffee +++ b/src/gutter-component.coffee @@ -17,7 +17,7 @@ GutterComponent = React.createClass {scrollHeight, scrollTop} = @props div className: 'gutter', onClick: @onClick, - div className: 'line-numbers', ref: 'lineNumbers', style: + div className: 'line-numbers editor-colors', ref: 'lineNumbers', style: height: scrollHeight WebkitTransform: "translate3d(0px, #{-scrollTop}px, 0px)" diff --git a/src/lines-component.coffee b/src/lines-component.coffee index 7abf75ddc..bbe2be24e 100644 --- a/src/lines-component.coffee +++ b/src/lines-component.coffee @@ -21,7 +21,7 @@ LinesComponent = React.createClass width: scrollWidth WebkitTransform: "translate3d(#{-scrollLeft}px, #{-scrollTop}px, 0px)" - div {className: 'lines', style}, + div {className: 'lines editor-colors', style}, SelectionsComponent({editor, selectionScreenRanges, lineHeightInPixels, defaultCharWidth}) if @isMounted() componentWillMount: ->