Implement SysColorChangeListener directly on Windows
This commit is contained in:
		
					parent
					
						
							
								25bcc2dd0d
							
						
					
				
			
			
				commit
				
					
						38281f3364
					
				
			
		
					 3 changed files with 17 additions and 26 deletions
				
			
		| 
						 | 
					@ -14,7 +14,11 @@ namespace atom {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace api {
 | 
					namespace api {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SystemPreferences::SystemPreferences(v8::Isolate* isolate) {
 | 
					SystemPreferences::SystemPreferences(v8::Isolate* isolate)
 | 
				
			||||||
 | 
					#if defined(OS_WIN)
 | 
				
			||||||
 | 
					    : color_change_listener_(this)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
  Init(isolate);
 | 
					  Init(isolate);
 | 
				
			||||||
#if defined(OS_WIN)
 | 
					#if defined(OS_WIN)
 | 
				
			||||||
  InitializeWindow();
 | 
					  InitializeWindow();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,7 +24,11 @@ namespace atom {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace api {
 | 
					namespace api {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SystemPreferences : public mate::EventEmitter<SystemPreferences> {
 | 
					class SystemPreferences : public mate::EventEmitter<SystemPreferences>
 | 
				
			||||||
 | 
					#if defined(OS_WIN)
 | 
				
			||||||
 | 
					    , public gfx::SysColorChangeListener
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 public:
 | 
					 public:
 | 
				
			||||||
  static mate::Handle<SystemPreferences> Create(v8::Isolate* isolate);
 | 
					  static mate::Handle<SystemPreferences> Create(v8::Isolate* isolate);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,8 +47,8 @@ class SystemPreferences : public mate::EventEmitter<SystemPreferences> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void InitializeWindow();
 | 
					  void InitializeWindow();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void OnColorChanged();
 | 
					  // gfx::SysColorChangeListener:
 | 
				
			||||||
 | 
					  void OnSysColorChange() override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#elif defined(OS_MACOSX)
 | 
					#elif defined(OS_MACOSX)
 | 
				
			||||||
  using NotificationCallback = base::Callback<
 | 
					  using NotificationCallback = base::Callback<
 | 
				
			||||||
| 
						 | 
					@ -101,9 +105,9 @@ class SystemPreferences : public mate::EventEmitter<SystemPreferences> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::string current_color_;
 | 
					  std::string current_color_;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  bool invertered_color_scheme_ = false;
 | 
					  bool invertered_color_scheme_;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::unique_ptr<gfx::ScopedSysColorChangeListener> color_change_listener_;
 | 
					  gfx::ScopedSysColorChangeListener color_change_listener_;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
  DISALLOW_COPY_AND_ASSIGN(SystemPreferences);
 | 
					  DISALLOW_COPY_AND_ASSIGN(SystemPreferences);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,21 +19,6 @@ const wchar_t kSystemPreferencesWindowClass[] =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace api {
 | 
					namespace api {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SystemPreferencesColorChangeListener
 | 
					 | 
				
			||||||
    : public gfx::SysColorChangeListener {
 | 
					 | 
				
			||||||
 public:
 | 
					 | 
				
			||||||
  explicit SystemPreferencesColorChangeListener(SystemPreferences* prefs)
 | 
					 | 
				
			||||||
      : prefs_(prefs) {
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  void OnSysColorChange() {
 | 
					 | 
				
			||||||
    prefs_->OnColorChanged();
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 private:
 | 
					 | 
				
			||||||
  SystemPreferences* prefs_;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool SystemPreferences::IsAeroGlassEnabled() {
 | 
					bool SystemPreferences::IsAeroGlassEnabled() {
 | 
				
			||||||
  return ui::win::IsAeroGlassEnabled();
 | 
					  return ui::win::IsAeroGlassEnabled();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -57,6 +42,8 @@ std::string SystemPreferences::GetAccentColor() {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void SystemPreferences::InitializeWindow() {
 | 
					void SystemPreferences::InitializeWindow() {
 | 
				
			||||||
 | 
					  invertered_color_scheme_ = IsInvertedColorScheme();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  WNDCLASSEX window_class;
 | 
					  WNDCLASSEX window_class;
 | 
				
			||||||
  base::win::InitializeWindowClass(
 | 
					  base::win::InitializeWindowClass(
 | 
				
			||||||
      kSystemPreferencesWindowClass,
 | 
					      kSystemPreferencesWindowClass,
 | 
				
			||||||
| 
						 | 
					@ -74,10 +61,6 @@ void SystemPreferences::InitializeWindow() {
 | 
				
			||||||
                         0, WS_POPUP, 0, 0, 0, 0, 0, 0, instance_, 0);
 | 
					                         0, WS_POPUP, 0, 0, 0, 0, 0, 0, instance_, 0);
 | 
				
			||||||
  gfx::CheckWindowCreated(window_);
 | 
					  gfx::CheckWindowCreated(window_);
 | 
				
			||||||
  gfx::SetWindowUserData(window_, this);
 | 
					  gfx::SetWindowUserData(window_, this);
 | 
				
			||||||
 | 
					 | 
				
			||||||
  color_change_listener_.reset(
 | 
					 | 
				
			||||||
      new gfx::ScopedSysColorChangeListener(
 | 
					 | 
				
			||||||
          new SystemPreferencesColorChangeListener(this)));
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LRESULT CALLBACK SystemPreferences::WndProcStatic(HWND hwnd,
 | 
					LRESULT CALLBACK SystemPreferences::WndProcStatic(HWND hwnd,
 | 
				
			||||||
| 
						 | 
					@ -107,7 +90,7 @@ LRESULT CALLBACK SystemPreferences::WndProc(HWND hwnd,
 | 
				
			||||||
  return ::DefWindowProc(hwnd, message, wparam, lparam);
 | 
					  return ::DefWindowProc(hwnd, message, wparam, lparam);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void SystemPreferences::OnColorChanged() {
 | 
					void SystemPreferences::OnSysColorChange() {
 | 
				
			||||||
  bool new_invertered_color_scheme = IsInvertedColorScheme();
 | 
					  bool new_invertered_color_scheme = IsInvertedColorScheme();
 | 
				
			||||||
  if (new_invertered_color_scheme != invertered_color_scheme_) {
 | 
					  if (new_invertered_color_scheme != invertered_color_scheme_) {
 | 
				
			||||||
    invertered_color_scheme_ = new_invertered_color_scheme;
 | 
					    invertered_color_scheme_ = new_invertered_color_scheme;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue