From 506753a535547e142f87de6514cff5982d95c305 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Tue, 14 Oct 2014 13:07:23 -0600 Subject: [PATCH] Subscribe to 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. --- src/atom.coffee | 3 +-- src/theme-manager.coffee | 20 +++++++------------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/atom.coffee b/src/atom.coffee index c4676425e..f60de7fab 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -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 ### diff --git a/src/theme-manager.coffee b/src/theme-manager.coffee index bd084e4c3..d958e3846 100644 --- a/src/theme-manager.coffee +++ b/src/theme-manager.coffee @@ -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 ###