| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "views/controls/menu/submenu_view.h" | 5 #include "views/controls/menu/submenu_view.h" |
| 6 | 6 |
| 7 #include "gfx/canvas.h" | 7 #include "gfx/canvas.h" |
| 8 #include "views/controls/menu/menu_config.h" | 8 #include "views/controls/menu/menu_config.h" |
| 9 #include "views/controls/menu/menu_controller.h" | 9 #include "views/controls/menu/menu_controller.h" |
| 10 #include "views/controls/menu/menu_host.h" | 10 #include "views/controls/menu/menu_host.h" |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 else | 79 else |
| 80 new_y = 0; | 80 new_y = 0; |
| 81 SetBounds(x(), new_y, parent->width(), pref_height); | 81 SetBounds(x(), new_y, parent->width(), pref_height); |
| 82 | 82 |
| 83 gfx::Insets insets = GetInsets(); | 83 gfx::Insets insets = GetInsets(); |
| 84 int x = insets.left(); | 84 int x = insets.left(); |
| 85 int y = insets.top(); | 85 int y = insets.top(); |
| 86 int menu_item_width = width() - insets.width(); | 86 int menu_item_width = width() - insets.width(); |
| 87 for (int i = 0; i < GetChildViewCount(); ++i) { | 87 for (int i = 0; i < GetChildViewCount(); ++i) { |
| 88 View* child = GetChildViewAt(i); | 88 View* child = GetChildViewAt(i); |
| 89 gfx::Size child_pref_size = child->GetPreferredSize(); | 89 if (child->IsVisible()) { |
| 90 child->SetBounds(x, y, menu_item_width, child_pref_size.height()); | 90 gfx::Size child_pref_size = child->GetPreferredSize(); |
| 91 y += child_pref_size.height(); | 91 child->SetBounds(x, y, menu_item_width, child_pref_size.height()); |
| 92 y += child_pref_size.height(); |
| 93 } |
| 92 } | 94 } |
| 93 } | 95 } |
| 94 | 96 |
| 95 gfx::Size SubmenuView::GetPreferredSize() { | 97 gfx::Size SubmenuView::GetPreferredSize() { |
| 96 if (GetChildViewCount() == 0) | 98 if (GetChildViewCount() == 0) |
| 97 return gfx::Size(); | 99 return gfx::Size(); |
| 98 | 100 |
| 99 max_accelerator_width_ = 0; | 101 max_accelerator_width_ = 0; |
| 100 int max_width = 0; | 102 int max_width = 0; |
| 101 int height = 0; | 103 int height = 0; |
| 102 for (int i = 0; i < GetChildViewCount(); ++i) { | 104 for (int i = 0; i < GetChildViewCount(); ++i) { |
| 103 View* child = GetChildViewAt(i); | 105 View* child = GetChildViewAt(i); |
| 104 gfx::Size child_pref_size = child->GetPreferredSize(); | 106 gfx::Size child_pref_size = child->IsVisible() ? |
| 107 child->GetPreferredSize() : gfx::Size(); |
| 105 max_width = std::max(max_width, child_pref_size.width()); | 108 max_width = std::max(max_width, child_pref_size.width()); |
| 106 height += child_pref_size.height(); | 109 height += child_pref_size.height(); |
| 107 if (child->GetID() == MenuItemView::kMenuItemViewID) { | 110 if (child->GetID() == MenuItemView::kMenuItemViewID) { |
| 108 MenuItemView* menu = static_cast<MenuItemView*>(child); | 111 MenuItemView* menu = static_cast<MenuItemView*>(child); |
| 109 max_accelerator_width_ = | 112 max_accelerator_width_ = |
| 110 std::max(max_accelerator_width_, menu->GetAcceleratorTextWidth()); | 113 std::max(max_accelerator_width_, menu->GetAcceleratorTextWidth()); |
| 111 } | 114 } |
| 112 } | 115 } |
| 113 if (max_accelerator_width_ > 0) { | 116 if (max_accelerator_width_ > 0) { |
| 114 max_accelerator_width_ += | 117 max_accelerator_width_ += |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 371 item_bounds.set_height(kDropIndicatorHeight); | 374 item_bounds.set_height(kDropIndicatorHeight); |
| 372 return item_bounds; | 375 return item_bounds; |
| 373 | 376 |
| 374 default: | 377 default: |
| 375 // Don't render anything for on. | 378 // Don't render anything for on. |
| 376 return gfx::Rect(); | 379 return gfx::Rect(); |
| 377 } | 380 } |
| 378 } | 381 } |
| 379 | 382 |
| 380 } // namespace views | 383 } // namespace views |
| OLD | NEW |