fix: set background color for menu bar on Windows (#37766)
This commit is contained in:
parent
a75b892e90
commit
6012172187
2 changed files with 15 additions and 3 deletions
|
@ -35,12 +35,11 @@ const char MenuBar::kViewClassName[] = "ElectronMenuBar";
|
||||||
MenuBar::MenuBar(NativeWindow* window, RootView* root_view)
|
MenuBar::MenuBar(NativeWindow* window, RootView* root_view)
|
||||||
: background_color_(kDefaultColor), window_(window), root_view_(root_view) {
|
: background_color_(kDefaultColor), window_(window), root_view_(root_view) {
|
||||||
const ui::NativeTheme* theme = root_view_->GetNativeTheme();
|
const ui::NativeTheme* theme = root_view_->GetNativeTheme();
|
||||||
RefreshColorCache(theme);
|
|
||||||
UpdateViewColors();
|
|
||||||
#if BUILDFLAG(IS_WIN)
|
#if BUILDFLAG(IS_WIN)
|
||||||
SetBackground(views::CreateThemedSolidBackground(ui::kColorMenuBackground));
|
SetBackground(views::CreateThemedSolidBackground(ui::kColorMenuBackground));
|
||||||
background_color_ = GetBackground()->get_color();
|
|
||||||
#endif
|
#endif
|
||||||
|
RefreshColorCache(theme);
|
||||||
|
UpdateViewColors();
|
||||||
SetFocusBehavior(FocusBehavior::ALWAYS);
|
SetFocusBehavior(FocusBehavior::ALWAYS);
|
||||||
SetLayoutManager(std::make_unique<views::BoxLayout>(
|
SetLayoutManager(std::make_unique<views::BoxLayout>(
|
||||||
views::BoxLayout::Orientation::kHorizontal));
|
views::BoxLayout::Orientation::kHorizontal));
|
||||||
|
@ -209,6 +208,14 @@ void MenuBar::ButtonPressed(size_t id, const ui::Event& event) {
|
||||||
menu_delegate->AddObserver(this);
|
menu_delegate->AddObserver(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MenuBar::ViewHierarchyChanged(
|
||||||
|
const views::ViewHierarchyChangedDetails& details) {
|
||||||
|
views::AccessiblePaneView::ViewHierarchyChanged(details);
|
||||||
|
#if BUILDFLAG(IS_WIN)
|
||||||
|
background_color_ = GetBackground()->get_color();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void MenuBar::RefreshColorCache(const ui::NativeTheme* theme) {
|
void MenuBar::RefreshColorCache(const ui::NativeTheme* theme) {
|
||||||
if (theme) {
|
if (theme) {
|
||||||
#if BUILDFLAG(IS_LINUX)
|
#if BUILDFLAG(IS_LINUX)
|
||||||
|
@ -217,6 +224,8 @@ void MenuBar::RefreshColorCache(const ui::NativeTheme* theme) {
|
||||||
gtk::GetFgColor("GtkMenuBar#menubar GtkMenuItem#menuitem GtkLabel");
|
gtk::GetFgColor("GtkMenuBar#menubar GtkMenuItem#menuitem GtkLabel");
|
||||||
disabled_color_ = gtk::GetFgColor(
|
disabled_color_ = gtk::GetFgColor(
|
||||||
"GtkMenuBar#menubar GtkMenuItem#menuitem:disabled GtkLabel");
|
"GtkMenuBar#menubar GtkMenuItem#menuitem:disabled GtkLabel");
|
||||||
|
#elif BUILDFLAG(IS_WIN)
|
||||||
|
background_color_ = GetBackground()->get_color();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,6 +50,9 @@ class MenuBar : public views::AccessiblePaneView,
|
||||||
ElectronMenuModel** menu_model,
|
ElectronMenuModel** menu_model,
|
||||||
views::MenuButton** button);
|
views::MenuButton** button);
|
||||||
|
|
||||||
|
void ViewHierarchyChanged(
|
||||||
|
const views::ViewHierarchyChangedDetails& details) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// MenuDelegate::Observer:
|
// MenuDelegate::Observer:
|
||||||
void OnBeforeExecuteCommand() override;
|
void OnBeforeExecuteCommand() override;
|
||||||
|
|
Loading…
Reference in a new issue