Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(77)

Side by Side Diff: ui/views/controls/menu/menu_controller.cc

Issue 1310903004: Use a ui::MenuModel in views::Combobox (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: +curlies Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/views/controls/menu/menu_config_mac.mm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/views/controls/menu/menu_controller.h" 5 #include "ui/views/controls/menu/menu_controller.h"
6 6
7 #include "base/i18n/case_conversion.h" 7 #include "base/i18n/case_conversion.h"
8 #include "base/i18n/rtl.h" 8 #include "base/i18n/rtl.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
(...skipping 1628 matching lines...) Expand 10 before | Expand all | Expand 10 after
1639 gfx::Rect MenuController::CalculateMenuBounds(MenuItemView* item, 1639 gfx::Rect MenuController::CalculateMenuBounds(MenuItemView* item,
1640 bool prefer_leading, 1640 bool prefer_leading,
1641 bool* is_leading) { 1641 bool* is_leading) {
1642 DCHECK(item); 1642 DCHECK(item);
1643 1643
1644 SubmenuView* submenu = item->GetSubmenu(); 1644 SubmenuView* submenu = item->GetSubmenu();
1645 DCHECK(submenu); 1645 DCHECK(submenu);
1646 1646
1647 gfx::Size pref = submenu->GetScrollViewContainer()->GetPreferredSize(); 1647 gfx::Size pref = submenu->GetScrollViewContainer()->GetPreferredSize();
1648 1648
1649 // For comboboxes, ensure the menu is at least as wide as the anchor.
1650 if (is_combobox_)
1651 pref.set_width(std::max(pref.width(), state_.initial_bounds.width()));
1652
1649 // Don't let the menu go too wide. 1653 // Don't let the menu go too wide.
1650 pref.set_width(std::min(pref.width(), 1654 pref.set_width(std::min(pref.width(),
1651 item->GetDelegate()->GetMaxWidthForMenu(item))); 1655 item->GetDelegate()->GetMaxWidthForMenu(item)));
1652 if (!state_.monitor_bounds.IsEmpty()) 1656 if (!state_.monitor_bounds.IsEmpty())
1653 pref.set_width(std::min(pref.width(), state_.monitor_bounds.width())); 1657 pref.set_width(std::min(pref.width(), state_.monitor_bounds.width()));
1654 1658
1655 // Assume we can honor prefer_leading. 1659 // Assume we can honor prefer_leading.
1656 *is_leading = prefer_leading; 1660 *is_leading = prefer_leading;
1657 1661
1658 int x, y; 1662 int x, y;
(...skipping 707 matching lines...) Expand 10 before | Expand all | Expand 10 after
2366 } 2370 }
2367 } 2371 }
2368 2372
2369 gfx::Screen* MenuController::GetScreen() { 2373 gfx::Screen* MenuController::GetScreen() {
2370 Widget* root = owner_ ? owner_->GetTopLevelWidget() : NULL; 2374 Widget* root = owner_ ? owner_->GetTopLevelWidget() : NULL;
2371 return root ? gfx::Screen::GetScreenFor(root->GetNativeView()) 2375 return root ? gfx::Screen::GetScreenFor(root->GetNativeView())
2372 : gfx::Screen::GetNativeScreen(); 2376 : gfx::Screen::GetNativeScreen();
2373 } 2377 }
2374 2378
2375 } // namespace views 2379 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/menu/menu_config_mac.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698