From 08971562cd915e62d3db1fc9f828b53a07e83f40 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Wed, 12 Nov 2014 14:40:09 -0700 Subject: [PATCH] Store useShadowDOM setting when TextEditorElement is created Rather than reading it repeatedly, since the value could potentially change over time. --- src/lines-component.coffee | 2 +- src/text-editor-component.coffee | 4 ++-- src/text-editor-element.coffee | 9 +++++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/lines-component.coffee b/src/lines-component.coffee index d314fe45f..272577097 100644 --- a/src/lines-component.coffee +++ b/src/lines-component.coffee @@ -59,7 +59,7 @@ LinesComponent = React.createClass @renderedDecorationsByLineId = {} componentDidMount: -> - if atom.config.get('editor.useShadowDOM') + if @props.useShadowDOM insertionPoint = document.createElement('content') insertionPoint.setAttribute('select', '.overlayer') @getDOMNode().appendChild(insertionPoint) diff --git a/src/text-editor-component.coffee b/src/text-editor-component.coffee index f42b9694c..06749233d 100644 --- a/src/text-editor-component.coffee +++ b/src/text-editor-component.coffee @@ -50,7 +50,7 @@ TextEditorComponent = React.createClass render: -> {focused, showIndentGuide, showLineNumbers, visible} = @state - {editor, mini, cursorBlinkPeriod, cursorBlinkResumeDelay, hostElement} = @props + {editor, mini, cursorBlinkPeriod, cursorBlinkResumeDelay, hostElement, useShadowDOM} = @props maxLineNumberDigits = editor.getLineCount().toString().length hasSelection = editor.getLastSelection()? and !editor.getLastSelection().isEmpty() style = {} @@ -117,7 +117,7 @@ TextEditorComponent = React.createClass @scrollingVertically, scrollHeight, scrollWidth, mouseWheelScreenRow, visible, scrollViewHeight, @scopedCharacterWidthsChangeCount, lineWidth, @useHardwareAcceleration, placeholderText, @performedInitialMeasurement, @backgroundColor, cursorPixelRects, - cursorBlinkPeriod, cursorBlinkResumeDelay, mini + cursorBlinkPeriod, cursorBlinkResumeDelay, mini, useShadowDOM } ScrollbarComponent diff --git a/src/text-editor-element.coffee b/src/text-editor-element.coffee index 866cb4f75..643b71f5e 100644 --- a/src/text-editor-element.coffee +++ b/src/text-editor-element.coffee @@ -28,6 +28,8 @@ class TextEditorElement extends HTMLElement @setAttribute('tabindex', -1) if atom.config.get('editor.useShadowDOM') + @useShadowDOM = true + unless ShadowStyleSheet? ShadowStyleSheet = document.createElement('style') ShadowStyleSheet.textContent = atom.themes.loadLessStylesheet(require.resolve('../static/text-editor-shadow.less')) @@ -45,6 +47,8 @@ class TextEditorElement extends HTMLElement @shadowRoot.appendChild(@stylesElement) @shadowRoot.appendChild(@rootElement) else + @useShadowDOM = false + @stylesElement = document.head.querySelector('atom-styles') @rootElement = this @@ -95,10 +99,11 @@ class TextEditorElement extends HTMLElement editor: @model mini: @model.mini lineOverdrawMargin: @lineOverdrawMargin + useShadowDOM: @useShadowDOM ) @component = React.renderComponent(@componentDescriptor, @rootElement) - unless atom.config.get('editor.useShadowDOM') + unless @useShadowDOM inputNode = @component.refs.input.getDOMNode() inputNode.addEventListener 'focus', @focused.bind(this) inputNode.addEventListener 'blur', => @dispatchEvent(new FocusEvent('blur', bubbles: false)) @@ -116,7 +121,7 @@ class TextEditorElement extends HTMLElement @focusOnAttach = true blurred: (event) -> - unless atom.config.get('editor.useShadowDOM') + unless @useShadowDOM if event.relatedTarget is @component?.refs.input?.getDOMNode() event.stopImmediatePropagation() return