summaryrefslogtreecommitdiffstats
path: root/views/controls
diff options
context:
space:
mode:
authorrhashimoto@chromium.org <rhashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-09 15:50:27 +0000
committerrhashimoto@chromium.org <rhashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-09 15:50:27 +0000
commit563df0400c193c4d6e4aa9c0c7fa5350a0ecb063 (patch)
tree8e1899e0dc86581dc7bbd8b718a71343a2071b43 /views/controls
parentc93b993237387e3e7f85a693dce2e3ae48a3d8d3 (diff)
downloadchromium_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.cc9
-rw-r--r--views/controls/menu/submenu_view.h9
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);
};