summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorskuhne@chromium.org <skuhne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-25 00:33:43 +0000
committerskuhne@chromium.org <skuhne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-25 00:33:43 +0000
commit07caa384e449354c57fb170a0331f637861e8c18 (patch)
treebeb4b6d6c30a09a77986a001191383a18ff42de8 /ui
parent9c6cf766d3a58701bfb6cf957c2936d0ca81b1c4 (diff)
downloadchromium_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.cc8
-rw-r--r--ui/views/controls/menu/menu_delegate.h9
-rw-r--r--ui/views/controls/menu/menu_item_view.cc30
-rw-r--r--ui/views/controls/menu/menu_item_view.h5
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.