diff options
Diffstat (limited to 'ui/views/controls/menu/menu_item_view.cc')
-rw-r--r-- | ui/views/controls/menu/menu_item_view.cc | 35 |
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; |