summaryrefslogtreecommitdiffstats
path: root/ui/views/controls/menu/menu_item_view.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ui/views/controls/menu/menu_item_view.cc')
-rw-r--r--ui/views/controls/menu/menu_item_view.cc35
1 files changed, 21 insertions, 14 deletions
diff --git a/ui/views/controls/menu/menu_item_view.cc b/ui/views/controls/menu/menu_item_view.cc
index 574d04c..385e6c0 100644
--- a/ui/views/controls/menu/menu_item_view.cc
+++ b/ui/views/controls/menu/menu_item_view.cc
@@ -219,7 +219,7 @@ MenuItemView* MenuItemView::AddMenuItemAt(
CreateSubmenu();
DCHECK_GE(submenu_->child_count(), index);
if (type == SEPARATOR) {
- submenu_->AddChildViewAt(new MenuSeparator(separator_style), index);
+ submenu_->AddChildViewAt(new MenuSeparator(this, separator_style), index);
return NULL;
}
MenuItemView* item = new MenuItemView(this, item_id, type);
@@ -530,7 +530,7 @@ void MenuItemView::Layout() {
x -= width - kChildXPadding;
}
// Position |icon_view|.
- const MenuConfig& config = MenuConfig::instance();
+ const MenuConfig& config = GetMenuConfig();
if (icon_view_) {
icon_view_->SizeToPreferredSize();
gfx::Size size = icon_view_->GetPreferredSize();
@@ -550,6 +550,14 @@ void MenuItemView::SetMargins(int top_margin, int bottom_margin) {
pref_size_.SetSize(0,0);
}
+const MenuConfig& MenuItemView::GetMenuConfig() const {
+ const MenuItemView* root_menu_item = GetRootMenuItem();
+ if (root_menu_item->menu_config_.get())
+ return *(root_menu_item->menu_config_);
+
+ return MenuConfig::instance();
+}
+
MenuItemView::MenuItemView(MenuItemView* parent,
int command,
MenuItemView::Type type)
@@ -586,7 +594,7 @@ std::string MenuItemView::GetClassName() const {
// This is invoked prior to Running a menu.
void MenuItemView::UpdateMenuPartSizes() {
MenuConfig::Reset();
- const MenuConfig& config = MenuConfig::instance();
+ const MenuConfig& config = GetMenuConfig();
item_right_margin_ = config.label_to_arrow_padding + config.arrow_width +
config.arrow_to_edge_padding;
@@ -606,7 +614,7 @@ void MenuItemView::UpdateMenuPartSizes() {
if (config.render_gutter)
label_start_ += config.gutter_width + config.gutter_to_label;
- MenuItemView menu_item(NULL);
+ MenuItemView menu_item(this, 0, NORMAL);
menu_item.SetTitle(ASCIIToUTF16("blah")); // Text doesn't matter here.
pref_menu_height_ = menu_item.GetPreferredSize().height();
}
@@ -664,8 +672,7 @@ int MenuItemView::GetDrawStringFlags() {
flags |= gfx::Canvas::TEXT_ALIGN_LEFT;
if (has_mnemonics_) {
- if (MenuConfig::instance().show_mnemonics ||
- GetRootMenuItem()->show_mnemonics_) {
+ if (GetMenuConfig().show_mnemonics || GetRootMenuItem()->show_mnemonics_) {
flags |= gfx::Canvas::SHOW_PREFIX;
} else {
flags |= gfx::Canvas::HIDE_PREFIX;
@@ -678,7 +685,7 @@ const gfx::Font& MenuItemView::GetFont() {
// Check for item-specific font.
const MenuDelegate* delegate = GetDelegate();
return delegate ?
- delegate->GetLabelFont(GetCommand()) : MenuConfig::instance().font;
+ delegate->GetLabelFont(GetCommand()) : GetMenuConfig().font;
}
void MenuItemView::AddEmptyMenus() {
@@ -726,7 +733,7 @@ void MenuItemView::PaintAccelerator(gfx::Canvas* canvas) {
int available_height = height() - GetTopMargin() - GetBottomMargin();
int max_accel_width =
parent_menu_item_->GetSubmenu()->max_accelerator_width();
- const MenuConfig& config = MenuConfig::instance();
+ const MenuConfig& config = GetMenuConfig();
int accel_right_margin = config.align_arrow_and_shortcut ?
config.arrow_to_edge_padding : item_right_margin_;
gfx::Rect accel_bounds(width() - accel_right_margin - max_accel_width,
@@ -763,8 +770,8 @@ int MenuItemView::GetTopMargin() {
MenuItemView* root = GetRootMenuItem();
return root && root->has_icons_
- ? MenuConfig::instance().item_top_margin :
- MenuConfig::instance().item_no_icon_top_margin;
+ ? GetMenuConfig().item_top_margin :
+ GetMenuConfig().item_no_icon_top_margin;
}
int MenuItemView::GetBottomMargin() {
@@ -773,8 +780,8 @@ int MenuItemView::GetBottomMargin() {
MenuItemView* root = GetRootMenuItem();
return root && root->has_icons_
- ? MenuConfig::instance().item_bottom_margin :
- MenuConfig::instance().item_no_icon_bottom_margin;
+ ? GetMenuConfig().item_bottom_margin :
+ GetMenuConfig().item_no_icon_bottom_margin;
}
gfx::Size MenuItemView::GetChildPreferredSize() {
@@ -829,7 +836,7 @@ MenuItemView::MenuItemDimensions MenuItemView::GetPreferredDimensions() {
dimensions.height = std::max(dimensions.height,
font.GetHeight() + GetBottomMargin() + GetTopMargin());
dimensions.height = std::max(dimensions.height,
- MenuConfig::instance().item_min_height);
+ GetMenuConfig().item_min_height);
return dimensions;
}
@@ -845,7 +852,7 @@ string16 MenuItemView::GetAcceleratorText() {
return string16();
}
- if(!MenuConfig::instance().show_accelerators)
+ if(!GetMenuConfig().show_accelerators)
return string16();
ui::Accelerator accelerator;