Update menubar color when theme changes
authorCheng Zhao <zcbenz@gmail.com>
Tue, 21 Jun 2016 09:05:01 +0000 (18:05 +0900)
committerCheng Zhao <zcbenz@gmail.com>
Tue, 21 Jun 2016 09:05:01 +0000 (18:05 +0900)
atom/browser/ui/views/menu_bar.cc
atom/browser/ui/views/menu_bar.h

index 872375c..796e6ef 100644 (file)
@@ -50,14 +50,7 @@ void GetMenuBarColor(SkColor* enabled, SkColor* disabled, SkColor* highlight,
 MenuBar::MenuBar()
     : background_color_(kDefaultColor),
       menu_model_(NULL) {
-#if defined(OS_WIN)
-  background_color_ = color_utils::GetSysSkColor(COLOR_MENUBAR);
-#elif defined(USE_X11)
-  GetMenuBarColor(&enabled_color_, &disabled_color_, &highlight_color_,
-                  &hover_color_, &background_color_);
-#endif
-
-  set_background(views::Background::CreateSolidBackground(background_color_));
+  UpdateMenuBarColor();
   SetLayoutManager(new views::BoxLayout(
       views::BoxLayout::kHorizontal, 0, 0, 0));
 }
@@ -159,4 +152,18 @@ void MenuBar::OnMenuButtonClicked(views::MenuButton* source,
   menu_delegate.RunMenu(menu_model_->GetSubmenuModelAt(id), source);
 }
 
+void MenuBar::OnNativeThemeChanged(const ui::NativeTheme* theme) {
+  UpdateMenuBarColor();
+}
+
+void MenuBar::UpdateMenuBarColor() {
+#if defined(OS_WIN)
+  background_color_ = color_utils::GetSysSkColor(COLOR_MENUBAR);
+#elif defined(USE_X11)
+  GetMenuBarColor(&enabled_color_, &disabled_color_, &highlight_color_,
+                  &hover_color_, &background_color_);
+#endif
+  set_background(views::Background::CreateSolidBackground(background_color_));
+}
+
 }  // namespace atom
index 9f38a59..eb62784 100644 (file)
@@ -60,9 +60,11 @@ class MenuBar : public views::View,
   void OnMenuButtonClicked(views::MenuButton* source,
                            const gfx::Point& point,
                            const ui::Event* event) override;
-
+  void OnNativeThemeChanged(const ui::NativeTheme* theme) override;
 
  private:
+  void UpdateMenuBarColor();
+
   SkColor background_color_;
 
 #if defined(USE_X11)