| Index: ui/views/controls/menu/menu_config_win.cc
|
| ===================================================================
|
| --- ui/views/controls/menu/menu_config_win.cc (revision 160892)
|
| +++ ui/views/controls/menu/menu_config_win.cc (working copy)
|
| @@ -19,8 +19,11 @@
|
|
|
| namespace views {
|
|
|
| -void MenuConfig::Init() {
|
| - text_color = NativeThemeWin::instance()->GetThemeColorWithDefault(
|
| +// static
|
| +MenuConfig* MenuConfig::Create() {
|
| + MenuConfig* config = new MenuConfig();
|
| +
|
| + config->text_color = NativeThemeWin::instance()->GetThemeColorWithDefault(
|
| NativeThemeWin::MENU, MENU_POPUPITEM, MPI_NORMAL, TMT_TEXTCOLOR,
|
| COLOR_MENUTEXT);
|
|
|
| @@ -28,9 +31,9 @@
|
| base::win::GetNonClientMetrics(&metrics);
|
| l10n_util::AdjustUIFont(&(metrics.lfMenuFont));
|
| {
|
| - base::win::ScopedHFONT new_font(CreateFontIndirect(&metrics.lfMenuFont));
|
| - DLOG_ASSERT(new_font.Get());
|
| - font = gfx::Font(new_font);
|
| + base::win::ScopedHFONT font(CreateFontIndirect(&metrics.lfMenuFont));
|
| + DLOG_ASSERT(font.Get());
|
| + config->font = gfx::Font(font);
|
| }
|
| NativeTheme::ExtraParams extra;
|
| extra.menu_check.is_radio = false;
|
| @@ -38,63 +41,64 @@
|
| gfx::Size check_size = NativeTheme::instance()->GetPartSize(
|
| NativeTheme::kMenuCheck, NativeTheme::kNormal, extra);
|
| if (!check_size.IsEmpty()) {
|
| - check_width = check_size.width();
|
| - check_height = check_size.height();
|
| + config->check_width = check_size.width();
|
| + config->check_height = check_size.height();
|
| } else {
|
| - check_width = GetSystemMetrics(SM_CXMENUCHECK);
|
| - check_height = GetSystemMetrics(SM_CYMENUCHECK);
|
| + config->check_width = GetSystemMetrics(SM_CXMENUCHECK);
|
| + config->check_height = GetSystemMetrics(SM_CYMENUCHECK);
|
| }
|
|
|
| extra.menu_check.is_radio = true;
|
| gfx::Size radio_size = NativeTheme::instance()->GetPartSize(
|
| NativeTheme::kMenuCheck, NativeTheme::kNormal, extra);
|
| if (!radio_size.IsEmpty()) {
|
| - radio_width = radio_size.width();
|
| - radio_height = radio_size.height();
|
| + config->radio_width = radio_size.width();
|
| + config->radio_height = radio_size.height();
|
| } else {
|
| - radio_width = GetSystemMetrics(SM_CXMENUCHECK);
|
| - radio_height = GetSystemMetrics(SM_CYMENUCHECK);
|
| + config->radio_width = GetSystemMetrics(SM_CXMENUCHECK);
|
| + config->radio_height = GetSystemMetrics(SM_CYMENUCHECK);
|
| }
|
|
|
| gfx::Size arrow_size = NativeTheme::instance()->GetPartSize(
|
| NativeTheme::kMenuPopupArrow, NativeTheme::kNormal, extra);
|
| if (!arrow_size.IsEmpty()) {
|
| - arrow_width = arrow_size.width();
|
| - arrow_height = arrow_size.height();
|
| + config->arrow_width = arrow_size.width();
|
| + config->arrow_height = arrow_size.height();
|
| } else {
|
| // Sadly I didn't see a specify metrics for this.
|
| - arrow_width = GetSystemMetrics(SM_CXMENUCHECK);
|
| - arrow_height = GetSystemMetrics(SM_CYMENUCHECK);
|
| + config->arrow_width = GetSystemMetrics(SM_CXMENUCHECK);
|
| + config->arrow_height = GetSystemMetrics(SM_CYMENUCHECK);
|
| }
|
|
|
| gfx::Size gutter_size = NativeTheme::instance()->GetPartSize(
|
| NativeTheme::kMenuPopupGutter, NativeTheme::kNormal, extra);
|
| if (!gutter_size.IsEmpty()) {
|
| - gutter_width = gutter_size.width();
|
| - render_gutter = true;
|
| + config->gutter_width = gutter_size.width();
|
| + config->render_gutter = true;
|
| } else {
|
| - gutter_width = 0;
|
| - render_gutter = false;
|
| + config->gutter_width = 0;
|
| + config->render_gutter = false;
|
| }
|
|
|
| gfx::Size separator_size = NativeTheme::instance()->GetPartSize(
|
| NativeTheme::kMenuPopupSeparator, NativeTheme::kNormal, extra);
|
| if (!separator_size.IsEmpty()) {
|
| - separator_height = separator_size.height();
|
| + config->separator_height = separator_size.height();
|
| } else {
|
| // -1 makes separator centered.
|
| - separator_height = GetSystemMetrics(SM_CYMENU) / 2 - 1;
|
| + config->separator_height = GetSystemMetrics(SM_CYMENU) / 2 - 1;
|
| }
|
|
|
| // On Windows, having some menus use wider spacing than others looks wrong.
|
| // See http://crbug.com/88875
|
| - item_no_icon_bottom_margin = item_bottom_margin;
|
| - item_no_icon_top_margin = item_top_margin;
|
| + config->item_no_icon_bottom_margin = config->item_bottom_margin;
|
| + config->item_no_icon_top_margin = config->item_top_margin;
|
|
|
| BOOL show_cues;
|
| - show_mnemonics =
|
| + config->show_mnemonics =
|
| (SystemParametersInfo(SPI_GETKEYBOARDCUES, 0, &show_cues, 0) &&
|
| show_cues == TRUE);
|
| + return config;
|
| }
|
|
|
| } // namespace views
|
|
|