Deprecate the platform-theme-changed event
authorCheng Zhao <zcbenz@gmail.com>
Mon, 25 Apr 2016 05:34:30 +0000 (14:34 +0900)
committerCheng Zhao <zcbenz@gmail.com>
Mon, 25 Apr 2016 05:35:34 +0000 (14:35 +0900)
atom/browser/api/atom_api_app.cc
atom/browser/api/atom_api_app.h
atom/browser/browser.cc
atom/browser/browser.h
atom/browser/browser_observer.h
atom/browser/mac/atom_application_delegate.mm
lib/browser/api/app.js

index 683ce45..ce20ce9 100644 (file)
@@ -331,12 +331,6 @@ void App::OnGpuProcessCrashed(base::TerminationStatus exit_code) {
   Emit("gpu-process-crashed");
 }
 
-#if defined(OS_MACOSX)
-void App::OnPlatformThemeChanged() {
-  Emit("platform-theme-changed");
-}
-#endif
-
 base::FilePath App::GetPath(mate::Arguments* args, const std::string& name) {
   bool succeed = false;
   base::FilePath path;
index 6a13d40..c99d5df 100644 (file)
@@ -92,10 +92,6 @@ class App : public AtomBrowserClient::Delegate,
   // content::GpuDataManagerObserver:
   void OnGpuProcessCrashed(base::TerminationStatus exit_code) override;
 
-#if defined(OS_MACOSX)
-  void OnPlatformThemeChanged() override;
-#endif
-
  private:
   // Get/Set the pre-defined path in PathService.
   base::FilePath GetPath(mate::Arguments* args, const std::string& name);
index b60df0d..b3c7a59 100644 (file)
@@ -187,8 +187,4 @@ void Browser::OnWindowAllClosed() {
     FOR_EACH_OBSERVER(BrowserObserver, observers_, OnWindowAllClosed());
 }
 
-void Browser::PlatformThemeChanged() {
-  FOR_EACH_OBSERVER(BrowserObserver, observers_, OnPlatformThemeChanged());
-}
-
 }  // namespace atom
index 366031b..0f1dbe9 100644 (file)
@@ -148,9 +148,6 @@ class Browser : public WindowListObserver {
   // Request basic auth login.
   void RequestLogin(LoginHandler* login_handler);
 
-  // Tell the application that plaform's theme changed.
-  void PlatformThemeChanged();
-
   void AddObserver(BrowserObserver* obs) {
     observers_.AddObserver(obs);
   }
index da327eb..f6d76bc 100644 (file)
@@ -45,8 +45,6 @@ class BrowserObserver {
   // The browser requests HTTP login.
   virtual void OnLogin(LoginHandler* login_handler) {}
 
-  virtual void OnPlatformThemeChanged() {}
-
  protected:
   virtual ~BrowserObserver() {}
 };
index f4db929..7662162 100644 (file)
@@ -24,9 +24,6 @@
   // Don't add the "Enter Full Screen" menu item automatically.
   [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"NSFullScreenMenuItemEverywhere"];
 
-  // Add observer to monitor the system's Dark Mode theme.
-  [[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(platformThemeChanged:) name:@"AppleInterfaceThemeChangedNotification" object:nil];
-
   atom::Browser::Get()->WillFinishLaunching();
 }
 
@@ -62,8 +59,4 @@
   return flag;
 }
 
-- (void)platformThemeChanged:(NSNotification *)notify {
-  atom::Browser::Get()->PlatformThemeChanged();
-}
-
 @end
index 413719a..0487270 100644 (file)
@@ -91,12 +91,21 @@ deprecate.event(app, 'activate-with-no-open-windows', 'activate', function (even
 deprecate.event(app, 'select-certificate', 'select-client-certificate')
 if (process.platform === 'win32') {
   app.isAeroGlassEnabled = deprecate('app.isAeroGlassEnabled', 'systemPreferences.isAeroGlassEnabled', function () {
-    return electron.systemPreferences.isAeroGlassEnabled();
+    return electron.systemPreferences.isAeroGlassEnabled()
   })
 } else if (process.platform === 'darwin') {
   app.isDarkMode = deprecate('app.isDarkMode', 'systemPreferences.isDarkMode', function () {
-    return electron.systemPreferences.isDarkMode();
+    return electron.systemPreferences.isDarkMode()
   })
+  app.on = app.addListener = function (event, listener) {
+    if (event === 'platform-theme-changed') {
+      deprecate.warn('platform-theme-changed event', "systemPreferences.subscribeNotification('AppleInterfaceThemeChangedNotification', callback)")
+      electron.systemPreferences.subscribeNotification('AppleInterfaceThemeChangedNotification', function () {
+        app.emit('platform-theme-changed')
+      })
+    }
+    EventEmitter.prototype.addListener.call(app, event, listener)
+  }
 }
 
 // Wrappers for native classes.