mirror of
https://github.com/atom/atom.git
synced 2026-02-19 02:44:29 -05:00
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:
@@ -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
|
||||
###
|
||||
|
||||
@@ -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
|
||||
###
|
||||
|
||||
Reference in New Issue
Block a user