diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-04 20:01:30 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-04 20:01:30 +0000 |
commit | 7568877302c9ef1e69e2939d345a52a91872a086 (patch) | |
tree | 958bb658b902609395fd00bcc6ffdc81ae8b234a /ui | |
parent | 3796cc671dd40528aebf231fcd284062446908ff (diff) | |
download | chromium_src-7568877302c9ef1e69e2939d345a52a91872a086.zip chromium_src-7568877302c9ef1e69e2939d345a52a91872a086.tar.gz chromium_src-7568877302c9ef1e69e2939d345a52a91872a086.tar.bz2 |
Allow CHECKBOX and RADIO MenuItemViews to have icons.
BUG=179493
Review URL: https://codereview.chromium.org/12385058
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@185950 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r-- | ui/views/controls/menu/menu_item_view.cc | 9 | ||||
-rw-r--r-- | ui/views/controls/menu/menu_item_view_win.cc | 5 |
2 files changed, 11 insertions, 3 deletions
diff --git a/ui/views/controls/menu/menu_item_view.cc b/ui/views/controls/menu/menu_item_view.cc index 3337807..4fe0f53 100644 --- a/ui/views/controls/menu/menu_item_view.cc +++ b/ui/views/controls/menu/menu_item_view.cc @@ -312,13 +312,13 @@ MenuItemView* MenuItemView::AppendMenuItemFromModel(ui::MenuModel* model, int index, int id) { gfx::Image icon; + model->GetIconAt(index, &icon); string16 label; ui::MenuSeparatorType separator_style = ui::NORMAL_SEPARATOR; MenuItemView::Type type; ui::MenuModel::ItemType menu_type = model->GetTypeAt(index); switch (menu_type) { case ui::MenuModel::TYPE_COMMAND: - model->GetIconAt(index, &icon); type = MenuItemView::NORMAL; label = model->GetLabelAt(index); break; @@ -331,11 +331,11 @@ MenuItemView* MenuItemView::AppendMenuItemFromModel(ui::MenuModel* model, label = model->GetLabelAt(index); break; case ui::MenuModel::TYPE_SEPARATOR: + icon = gfx::Image(); type = MenuItemView::SEPARATOR; separator_style = model->GetSeparatorTypeAt(index); break; case ui::MenuModel::TYPE_SUBMENU: - model->GetIconAt(index, &icon); type = MenuItemView::SUBMENU; label = model->GetLabelAt(index); break; @@ -560,6 +560,8 @@ void MenuItemView::Layout() { gfx::Size size = icon_view_->GetPreferredSize(); int x = config.item_left_margin + left_icon_margin_ + (icon_area_width_ - size.width()) / 2; + if (type_ == CHECKBOX || type_ == RADIO) + x = label_start_; int y = (height() + GetTopMargin() - GetBottomMargin() - size.height()) / 2; icon_view_->SetPosition(gfx::Point(x, y)); @@ -831,6 +833,9 @@ void MenuItemView::PaintButtonCommon(gfx::Canvas* canvas, const gfx::Font& font = GetFont(); int accel_width = parent_menu_item_->GetSubmenu()->max_accelerator_width(); int label_start = label_start_ + left_icon_margin_ + right_icon_margin_; + if ((type_ == CHECKBOX || type_ == RADIO) && icon_view_) + label_start += icon_view_->size().width() + config.icon_to_label_padding; + int width = this->width() - label_start - accel_width - (!GetDelegate() || GetDelegate()->ShouldReserveSpaceForSubmenuIndicator() ? diff --git a/ui/views/controls/menu/menu_item_view_win.cc b/ui/views/controls/menu/menu_item_view_win.cc index 03e9b8b..b28b3af 100644 --- a/ui/views/controls/menu/menu_item_view_win.cc +++ b/ui/views/controls/menu/menu_item_view_win.cc @@ -103,7 +103,10 @@ void MenuItemView::PaintButton(gfx::Canvas* canvas, PaintButtonMode mode) { int width = this->width() - item_right_margin_ - label_start_ - accel_width; int height = this->height() - GetTopMargin() - GetBottomMargin(); int flags = GetDrawStringFlags(); - gfx::Rect text_bounds(label_start_, top_margin, width, height); + int label_start = label_start_; + if ((type_ == CHECKBOX || type_ == RADIO) && icon_view_) + label_start += icon_view_->size().width() + config.icon_to_label_padding; + gfx::Rect text_bounds(label_start, top_margin, width, height); text_bounds.set_x(GetMirroredXForRect(text_bounds)); if (mode == PB_FOR_DRAG) { // With different themes, it's difficult to tell what the correct |