diff options
author | yefim@chromium.org <yefim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-20 00:52:29 +0000 |
---|---|---|
committer | yefim@chromium.org <yefim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-20 00:52:29 +0000 |
commit | a673f35eda3aa6859420688dae2e2b08fe126818 (patch) | |
tree | a55b37ba7dfd614d75855bd37f48a67f8d07d76b /ui/views/controls | |
parent | 3d95e54652070dacfdb9188c3f6f48111bcc007e (diff) | |
download | chromium_src-a673f35eda3aa6859420688dae2e2b08fe126818.zip chromium_src-a673f35eda3aa6859420688dae2e2b08fe126818.tar.gz chromium_src-a673f35eda3aa6859420688dae2e2b08fe126818.tar.bz2 |
Added flag to enable new menu style.
Changed so far: menu background, no gutter, separator, border with round corners (corners are not transparent yet).
This is work in progress, just want to keep change size manageable.
BUG=157692
Review URL: https://chromiumcodereview.appspot.com/11348055
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@168671 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/views/controls')
-rw-r--r-- | ui/views/controls/menu/menu_config.cc | 11 | ||||
-rw-r--r-- | ui/views/controls/menu/menu_config.h | 10 | ||||
-rw-r--r-- | ui/views/controls/menu/menu_config_views.cc | 3 | ||||
-rw-r--r-- | ui/views/controls/menu/menu_config_win.cc | 3 | ||||
-rw-r--r-- | ui/views/controls/menu/menu_controller.cc | 2 | ||||
-rw-r--r-- | ui/views/controls/menu/menu_item_view_win.cc | 22 | ||||
-rw-r--r-- | ui/views/controls/menu/menu_scroll_view_container.cc | 26 | ||||
-rw-r--r-- | ui/views/controls/menu/menu_separator_win.cc | 1 |
8 files changed, 45 insertions, 33 deletions
diff --git a/ui/views/controls/menu/menu_config.cc b/ui/views/controls/menu/menu_config.cc index 5c951c8..84abe5d 100644 --- a/ui/views/controls/menu/menu_config.cc +++ b/ui/views/controls/menu/menu_config.cc @@ -13,8 +13,7 @@ namespace views { MenuConfig::MenuConfig(const ui::NativeTheme* theme) : text_color(SK_ColorBLACK), arrow_color(SK_ColorBLACK), - submenu_horizontal_margin_size(3), - submenu_vertical_margin_size(3), + menu_border_size(3), submenu_horizontal_inset(3), item_top_margin(3), item_bottom_margin(4), @@ -57,4 +56,12 @@ MenuConfig::MenuConfig(const ui::NativeTheme* theme) MenuConfig::~MenuConfig() {} +void MenuConfig::AdjustForCommonTheme() { + render_gutter = false; + item_top_margin = 6; + item_bottom_margin = 6; + separator_height = 15; + menu_border_size = 2; +} + } // namespace views diff --git a/ui/views/controls/menu/menu_config.h b/ui/views/controls/menu/menu_config.h index 9be9921..79a8659 100644 --- a/ui/views/controls/menu/menu_config.h +++ b/ui/views/controls/menu/menu_config.h @@ -32,11 +32,8 @@ struct VIEWS_EXPORT MenuConfig { // Color for the arrow to scroll bookmarks. SkColor arrow_color; - // Submenu horizontal margin size. - int submenu_horizontal_margin_size; - - // Submenu vertical margin size. - int submenu_vertical_margin_size; + // Menu border size. + int menu_border_size; // Submenu horizontal inset with parent menu. This is the horizontal overlap // between the submenu and its parent menu, not including the borders of @@ -134,6 +131,9 @@ struct VIEWS_EXPORT MenuConfig { #if defined(USE_AURA) void InitAura(); #endif + + // Adjust some values for a new UI style. + void AdjustForCommonTheme(); }; } // namespace views diff --git a/ui/views/controls/menu/menu_config_views.cc b/ui/views/controls/menu/menu_config_views.cc index 15e849a..a0285d6 100644 --- a/ui/views/controls/menu/menu_config_views.cc +++ b/ui/views/controls/menu/menu_config_views.cc @@ -23,8 +23,7 @@ void MenuConfig::InitAura() { ui::NativeTheme* theme = ui::NativeThemeAura::instance(); text_color = theme->GetSystemColor( ui::NativeTheme::kColorId_EnabledMenuItemForegroundColor); - submenu_horizontal_margin_size = 0; - submenu_vertical_margin_size = 0; + menu_border_size = 0; submenu_horizontal_inset = 1; ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); arrow_to_edge_padding = 20; diff --git a/ui/views/controls/menu/menu_config_win.cc b/ui/views/controls/menu/menu_config_win.cc index d7ae562..c35e976 100644 --- a/ui/views/controls/menu/menu_config_win.cc +++ b/ui/views/controls/menu/menu_config_win.cc @@ -99,6 +99,9 @@ void MenuConfig::Init(const NativeTheme* theme) { separator_height = GetSystemMetrics(SM_CYMENU) / 2 - 1; } + if (NativeTheme::IsNewMenuStyleEnabled()) + AdjustForCommonTheme(); + // 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; diff --git a/ui/views/controls/menu/menu_controller.cc b/ui/views/controls/menu/menu_controller.cc index 9151c34..d7077e9 100644 --- a/ui/views/controls/menu/menu_controller.cc +++ b/ui/views/controls/menu/menu_controller.cc @@ -1695,7 +1695,7 @@ gfx::Rect MenuController::CalculateMenuBounds(MenuItemView* item, x = item_loc.x() + item->width() - submenu_horizontal_inset; } } - y = item_loc.y() - menu_config.submenu_vertical_margin_size; + y = item_loc.y() - menu_config.menu_border_size; if (state_.monitor_bounds.width() != 0) { pref.set_height(std::min(pref.height(), state_.monitor_bounds.height())); if (y + pref.height() > state_.monitor_bounds.bottom()) diff --git a/ui/views/controls/menu/menu_item_view_win.cc b/ui/views/controls/menu/menu_item_view_win.cc index 5d543ba..461b9fe9 100644 --- a/ui/views/controls/menu/menu_item_view_win.cc +++ b/ui/views/controls/menu/menu_item_view_win.cc @@ -57,7 +57,17 @@ void MenuItemView::PaintButton(gfx::Canvas* canvas, PaintButtonMode mode) { control_state = NativeTheme::kDisabled; } - // The gutter is rendered before the background. + // Render the background. + if (mode == PB_NORMAL) { + gfx::Rect item_bounds(0, 0, width(), height()); + AdjustBoundsForRTLUI(&item_bounds); + NativeTheme::ExtraParams extra; + extra.menu_item.is_selected = render_selection; + config.native_theme->Paint(canvas->sk_canvas(), + NativeTheme::kMenuItemBackground, control_state, item_bounds, extra); + } + + // Render the gutter. if (config.render_gutter && mode == PB_NORMAL) { gfx::Rect gutter_bounds(label_start_ - config.gutter_to_label - config.gutter_width, 0, config.gutter_width, @@ -71,16 +81,6 @@ void MenuItemView::PaintButton(gfx::Canvas* canvas, PaintButtonMode mode) { extra); } - // Render the background. - if (mode == PB_NORMAL) { - gfx::Rect item_bounds(0, 0, width(), height()); - NativeTheme::ExtraParams extra; - extra.menu_item.is_selected = render_selection; - AdjustBoundsForRTLUI(&item_bounds); - config.native_theme->Paint(canvas->sk_canvas(), - NativeTheme::kMenuItemBackground, control_state, item_bounds, extra); - } - int top_margin = GetTopMargin(); int bottom_margin = GetBottomMargin(); diff --git a/ui/views/controls/menu/menu_scroll_view_container.cc b/ui/views/controls/menu/menu_scroll_view_container.cc index 8a85d60..73dbaca 100644 --- a/ui/views/controls/menu/menu_scroll_view_container.cc +++ b/ui/views/controls/menu/menu_scroll_view_container.cc @@ -4,12 +4,6 @@ #include "ui/views/controls/menu/menu_scroll_view_container.h" -#if defined(OS_WIN) -#include <windows.h> -#include <uxtheme.h> -#include <Vssym32.h> -#endif - #include "third_party/skia/include/core/SkPaint.h" #include "third_party/skia/include/core/SkPath.h" #include "ui/base/accessibility/accessible_view_state.h" @@ -20,6 +14,7 @@ #include "ui/views/controls/menu/menu_controller.h" #include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/controls/menu/submenu_view.h" +#include "ui/views/round_rect_painter.h" using ui::NativeTheme; @@ -179,11 +174,20 @@ MenuScrollViewContainer::MenuScrollViewContainer(SubmenuView* content_view) const MenuConfig& menu_config = content_view_->GetMenuItem()->GetMenuConfig(); - set_border(Border::CreateEmptyBorder( - menu_config.submenu_vertical_margin_size, - menu_config.submenu_horizontal_margin_size, - menu_config.submenu_vertical_margin_size, - menu_config.submenu_horizontal_margin_size)); + + if (NativeTheme::IsNewMenuStyleEnabled()) { + set_border(views::Border::CreateBorderPainter( + new views::RoundRectPainter( + ui::NativeTheme::instance()->GetSystemColor( + ui::NativeTheme::kColorId_MenuBorderColor)), + gfx::Insets(menu_config.menu_border_size, menu_config.menu_border_size, + menu_config.menu_border_size, menu_config.menu_border_size))); + } else { + set_border(Border::CreateEmptyBorder(menu_config.menu_border_size, + menu_config.menu_border_size, + menu_config.menu_border_size, + menu_config.menu_border_size)); + } } void MenuScrollViewContainer::OnPaintBackground(gfx::Canvas* canvas) { diff --git a/ui/views/controls/menu/menu_separator_win.cc b/ui/views/controls/menu/menu_separator_win.cc index 89db94a..6f95334 100644 --- a/ui/views/controls/menu/menu_separator_win.cc +++ b/ui/views/controls/menu/menu_separator_win.cc @@ -30,7 +30,6 @@ void MenuSeparator::OnPaint(gfx::Canvas* canvas) { } #endif - // The gutter is rendered before the background. int start_x = 0; if (config.render_gutter) { // If render_gutter is true, we're on Vista and need to render the |