diff options
author | rhashimoto@chromium.org <rhashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-09 15:50:27 +0000 |
---|---|---|
committer | rhashimoto@chromium.org <rhashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-09 15:50:27 +0000 |
commit | 563df0400c193c4d6e4aa9c0c7fa5350a0ecb063 (patch) | |
tree | 8e1899e0dc86581dc7bbd8b718a71343a2071b43 /views/controls | |
parent | c93b993237387e3e7f85a693dce2e3ae48a3d8d3 (diff) | |
download | chromium_src-563df0400c193c4d6e4aa9c0c7fa5350a0ecb063.zip chromium_src-563df0400c193c4d6e4aa9c0c7fa5350a0ecb063.tar.gz chromium_src-563df0400c193c4d6e4aa9c0c7fa5350a0ecb063.tar.bz2 |
ComboBox needs a minimum menu width and now uses MenuItemView.
Added SubmenuView::set_minimum_preferred_width() to put an optional
lower bound on menu width (default 0 for no lower bound) for
MenuItemView menus.
This CL originally included a minimum width setting for the ChromiumOS network status menu, but the network status menu conversion from Menu2 was reverted. Since the change is also needed for ComboBox I am handling it separately.
BUG=chromium-os:12988
TEST=none
Review URL: http://codereview.chromium.org/6900028
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@84624 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/controls')
-rw-r--r-- | views/controls/menu/submenu_view.cc | 9 | ||||
-rw-r--r-- | views/controls/menu/submenu_view.h | 9 |
2 files changed, 15 insertions, 3 deletions
diff --git a/views/controls/menu/submenu_view.cc b/views/controls/menu/submenu_view.cc index cb72f93..1f568e6 100644 --- a/views/controls/menu/submenu_view.cc +++ b/views/controls/menu/submenu_view.cc @@ -37,7 +37,8 @@ SubmenuView::SubmenuView(MenuItemView* parent) drop_item_(NULL), drop_position_(MenuDelegate::DROP_NONE), scroll_view_container_(NULL), - max_accelerator_width_(0) { + max_accelerator_width_(0), + minimum_preferred_width_(0) { DCHECK(parent); // We'll delete ourselves, otherwise the ScrollView would delete us on close. set_parent_owned(false); @@ -123,8 +124,10 @@ gfx::Size SubmenuView::GetPreferredSize() { MenuConfig::instance().label_to_accelerator_padding; } gfx::Insets insets = GetInsets(); - return gfx::Size(max_width + max_accelerator_width_ + insets.width(), - height + insets.height()); + return gfx::Size( + std::max(max_width + max_accelerator_width_ + insets.width(), + minimum_preferred_width_), + height + insets.height()); } void SubmenuView::GetAccessibleState(ui::AccessibleViewState* state) { diff --git a/views/controls/menu/submenu_view.h b/views/controls/menu/submenu_view.h index bcc6aae..5325e33 100644 --- a/views/controls/menu/submenu_view.h +++ b/views/controls/menu/submenu_view.h @@ -130,6 +130,12 @@ class SubmenuView : public View { // children's children, only direct children. int max_accelerator_width() const { return max_accelerator_width_; } + // Minimum width of menu in pixels (default 0). This becomes the smallest + // width returned by GetPreferredSize(). + void set_minimum_preferred_width(int minimum_preferred_width) { + minimum_preferred_width_ = minimum_preferred_width; + } + // Padding around the edges of the submenu. static const int kSubmenuBorderSize; @@ -176,6 +182,9 @@ class SubmenuView : public View { // See description above getter. int max_accelerator_width_; + // Minimum width returned in GetPreferredSize(). + int minimum_preferred_width_; + DISALLOW_COPY_AND_ASSIGN(SubmenuView); }; |