diff options
author | skuhne@chromium.org <skuhne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-25 00:33:43 +0000 |
---|---|---|
committer | skuhne@chromium.org <skuhne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-25 00:33:43 +0000 |
commit | 07caa384e449354c57fb170a0331f637861e8c18 (patch) | |
tree | beb4b6d6c30a09a77986a001191383a18ff42de8 /ui | |
parent | 9c6cf766d3a58701bfb6cf957c2936d0ca81b1c4 (diff) | |
download | chromium_src-07caa384e449354c57fb170a0331f637861e8c18.zip chromium_src-07caa384e449354c57fb170a0331f637861e8c18.tar.gz chromium_src-07caa384e449354c57fb170a0331f637861e8c18.tar.bz2 |
Changing the menu to the correct base style
BUG=169297
TEST=visual
Review URL: https://chromiumcodereview.appspot.com/12047065
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@178713 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r-- | ui/views/controls/menu/menu_delegate.cc | 8 | ||||
-rw-r--r-- | ui/views/controls/menu/menu_delegate.h | 9 | ||||
-rw-r--r-- | ui/views/controls/menu/menu_item_view.cc | 30 | ||||
-rw-r--r-- | ui/views/controls/menu/menu_item_view.h | 5 |
4 files changed, 47 insertions, 5 deletions
diff --git a/ui/views/controls/menu/menu_delegate.cc b/ui/views/controls/menu/menu_delegate.cc index 2457eee..85b6170 100644 --- a/ui/views/controls/menu/menu_delegate.cc +++ b/ui/views/controls/menu/menu_delegate.cc @@ -132,4 +132,12 @@ void MenuDelegate::WillShowMenu(MenuItemView* menu) { void MenuDelegate::WillHideMenu(MenuItemView* menu) { } +void MenuDelegate::GetHorizontalIconMargins(int command_id, + int icon_size, + int* left_margin, + int* right_margin) const { + *left_margin = 0; + *right_margin = 0; +} + } // namespace views diff --git a/ui/views/controls/menu/menu_delegate.h b/ui/views/controls/menu/menu_delegate.h index 5d2ae0d..d3eee19 100644 --- a/ui/views/controls/menu/menu_delegate.h +++ b/ui/views/controls/menu/menu_delegate.h @@ -205,6 +205,15 @@ class VIEWS_EXPORT MenuDelegate { // Invoked prior to a menu being hidden. virtual void WillHideMenu(MenuItemView* menu); + + // Returns additional horizontal spacing for the icon of the given item. + // The |command_id| specifies the item of interest, the |icon_size| tells the + // function the size of the icon and it will then return |left_margin| + // and |right_margin| accordingly. Note: Negative values can be returned. + virtual void GetHorizontalIconMargins(int command_id, + int icon_size, + int* left_margin, + int* right_margin) const; }; } // namespace views diff --git a/ui/views/controls/menu/menu_item_view.cc b/ui/views/controls/menu/menu_item_view.cc index 5b93fa0..787f402 100644 --- a/ui/views/controls/menu/menu_item_view.cc +++ b/ui/views/controls/menu/menu_item_view.cc @@ -100,6 +100,8 @@ MenuItemView::MenuItemView(MenuDelegate* delegate) icon_view_(NULL), top_margin_(-1), bottom_margin_(-1), + left_icon_margin_(0), + right_icon_margin_(0), requested_menu_position_(POSITION_BEST_FIT), actual_menu_position_(requested_menu_position_), use_right_margin_(true) { @@ -540,7 +542,8 @@ void MenuItemView::Layout() { if (icon_view_) { icon_view_->SizeToPreferredSize(); gfx::Size size = icon_view_->GetPreferredSize(); - int x = config.item_left_margin + (icon_area_width_ - size.width()) / 2; + int x = config.item_left_margin + left_icon_margin_ + + (icon_area_width_ - size.width()) / 2; int y = (height() + GetTopMargin() - GetBottomMargin() - size.height()) / 2; icon_view_->SetPosition(gfx::Point(x, y)); @@ -580,6 +583,8 @@ MenuItemView::MenuItemView(MenuItemView* parent, icon_view_(NULL), top_margin_(-1), bottom_margin_(-1), + left_icon_margin_(0), + right_icon_margin_(0), requested_menu_position_(POSITION_BEST_FIT), actual_menu_position_(requested_menu_position_) { Init(parent, command, type, NULL); @@ -750,7 +755,7 @@ void MenuItemView::PaintButtonCommon(gfx::Canvas* canvas, parent_menu_item_->GetSubmenu()->GetShowSelection(this) && (NonIconChildViewsCount() == 0)); - int icon_x = config.item_left_margin; + int icon_x = config.item_left_margin + left_icon_margin_; int top_margin = GetTopMargin(); int bottom_margin = GetBottomMargin(); int icon_y = top_margin + (height() - config.item_top_margin - @@ -803,8 +808,9 @@ void MenuItemView::PaintButtonCommon(gfx::Canvas* canvas, const gfx::Font& font = GetFont(); int accel_width = parent_menu_item_->GetSubmenu()->max_accelerator_width(); - int width = this->width() - item_right_margin_ - label_start_ - accel_width; - gfx::Rect text_bounds(label_start_, top_margin, width, available_height); + int label_start = label_start_ + left_icon_margin_ + right_icon_margin_; + int width = this->width() - item_right_margin_ - label_start - accel_width; + gfx::Rect text_bounds(label_start, top_margin, width, available_height); text_bounds.set_x(GetMirroredXForRect(text_bounds)); int flags = GetDrawStringFlags(); if (mode == PB_FOR_DRAG) @@ -928,7 +934,21 @@ MenuItemView::MenuItemDimensions MenuItemView::GetPreferredDimensions() { // Determine the length of the label text. const gfx::Font& font = GetFont(); - dimensions.standard_width = font.GetStringWidth(title_) + label_start_ + + + // Get Icon margin overrides for this particular item. + const MenuDelegate* delegate = GetDelegate(); + if (delegate) { + delegate->GetHorizontalIconMargins(command_, + icon_area_width_, + &left_icon_margin_, + &right_icon_margin_); + } else { + left_icon_margin_ = 0; + right_icon_margin_ = 0; + } + int label_start = label_start_ + left_icon_margin_ + right_icon_margin_; + + dimensions.standard_width = font.GetStringWidth(title_) + label_start + item_right_margin_; // Determine the length of the accelerator text. string16 text = GetAcceleratorText(); diff --git a/ui/views/controls/menu/menu_item_view.h b/ui/views/controls/menu/menu_item_view.h index efc8610..7fc4e21 100644 --- a/ui/views/controls/menu/menu_item_view.h +++ b/ui/views/controls/menu/menu_item_view.h @@ -503,6 +503,11 @@ class VIEWS_EXPORT MenuItemView : public View { int top_margin_; int bottom_margin_; + // Horizontal icon margins in pixels, which can differ between MenuItems. + // These values will be set in the layout process. + int left_icon_margin_; + int right_icon_margin_; + // |menu_position_| is the requested position with respect to the bounds. // |actual_menu_position_| is used by the controller to cache the // position of the menu being shown. |