Subscribe to <atom-styles> element to shim events in ThemeManager

This is better than subscribing to atom.styles because the events it
emits contain the *actual* style elements we insert into the DOM.
This commit is contained in:
Nathan Sobo
2014-10-14 13:07:23 -06:00
parent a8b9e1b790
commit 506753a535
2 changed files with 8 additions and 15 deletions

View File

@@ -204,6 +204,7 @@ class Atom extends Model
@commands = new CommandRegistry
@packages = new PackageManager({devMode, configDirPath, resourcePath, safeMode})
@styles = new StyleManager
document.head.appendChild(new StylesElement)
@themes = new ThemeManager({packageManager: @packages, configDirPath, resourcePath, safeMode})
@contextMenu = new ContextMenuManager({resourcePath, devMode})
@menu = new MenuManager({resourcePath})
@@ -222,8 +223,6 @@ class Atom extends Model
@windowEventHandler = new WindowEventHandler
document.head.appendChild(new StylesElement)
###
Section: Event Subscription
###

View File

@@ -24,26 +24,24 @@ class ThemeManager
@initialLoadComplete = false
@packageManager.registerPackageActivator(this, ['theme'])
atom.styles.onDidAddStyleElement @styleElementAdded.bind(this)
atom.styles.onDidRemoveStyleElement @styleElementRemoved.bind(this)
atom.styles.onDidUpdateStyleElement @styleElementUpdated.bind(this)
stylesElement = document.head.querySelector('atom-styles')
stylesElement.onDidAddStyleElement @styleElementAdded.bind(this)
stylesElement.onDidRemoveStyleElement @styleElementRemoved.bind(this)
stylesElement.onDidUpdateStyleElement @styleElementUpdated.bind(this)
styleElementAdded: (element) ->
sheet = @styleSheetForElement(element)
styleElementAdded: ({sheet}) ->
@emit 'stylesheet-added', sheet
@emitter.emit 'did-add-stylesheet', sheet
@emit 'stylesheets-changed'
@emitter.emit 'did-change-stylesheets'
styleElementRemoved: (element) ->
sheet = @styleSheetForElement(element)
styleElementRemoved: ({sheet}) ->
@emit 'stylesheet-removed', sheet
@emitter.emit 'did-remove-stylesheet', sheet
@emit 'stylesheets-changed'
@emitter.emit 'did-change-stylesheets'
styleElementUpdated: (element) ->
sheet = @styleSheetForElement(element)
styleElementUpdated: ({sheet}) ->
@emit 'stylesheet-removed', sheet
@emitter.emit 'did-remove-stylesheet', sheet
@emit 'stylesheet-added', sheet
@@ -51,10 +49,6 @@ class ThemeManager
@emit 'stylesheets-changed'
@emitter.emit 'did-change-stylesheets'
styleSheetForElement: (element) ->
@stylesElement ?= document.head.querySelector('atom-styles')
@stylesElement.styleElementClonesByOriginalElement.get(element)?.sheet
###
Section: Event Subscription
###