| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/menu_item_view.h" | 5 #include "views/controls/menu/menu_item_view.h" |
| 6 | 6 |
| 7 #include "base/i18n/case_conversion.h" | 7 #include "base/i18n/case_conversion.h" |
| 8 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
| 9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
| 10 #include "grit/ui_strings.h" | 10 #include "grit/ui_strings.h" |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 MenuItemView::~MenuItemView() { | 103 MenuItemView::~MenuItemView() { |
| 104 // TODO(sky): ownership is bit wrong now. In particular if a nested message | 104 // TODO(sky): ownership is bit wrong now. In particular if a nested message |
| 105 // loop is running deletion can't be done, otherwise the stack gets | 105 // loop is running deletion can't be done, otherwise the stack gets |
| 106 // thoroughly screwed. The destructor should be made private, and | 106 // thoroughly screwed. The destructor should be made private, and |
| 107 // MenuController should be the only place handling deletion of the menu. | 107 // MenuController should be the only place handling deletion of the menu. |
| 108 // (57890). | 108 // (57890). |
| 109 delete submenu_; | 109 delete submenu_; |
| 110 STLDeleteElements(&removed_items_); | 110 STLDeleteElements(&removed_items_); |
| 111 } | 111 } |
| 112 | 112 |
| 113 void MenuItemView::ChildPreferredSizeChanged(View* child) { |
| 114 pref_size_.SetSize(0, 0); |
| 115 PreferredSizeChanged(); |
| 116 } |
| 117 |
| 113 bool MenuItemView::GetTooltipText(const gfx::Point& p, std::wstring* tooltip) { | 118 bool MenuItemView::GetTooltipText(const gfx::Point& p, std::wstring* tooltip) { |
| 114 *tooltip = UTF16ToWideHack(tooltip_); | 119 *tooltip = UTF16ToWideHack(tooltip_); |
| 115 if (!tooltip->empty()) | 120 if (!tooltip->empty()) |
| 116 return true; | 121 return true; |
| 117 | 122 |
| 118 if (GetType() == SEPARATOR) | 123 if (GetType() == SEPARATOR) |
| 119 return false; | 124 return false; |
| 120 | 125 |
| 121 MenuController* controller = GetMenuController(); | 126 MenuController* controller = GetMenuController(); |
| 122 if (!controller || controller->exit_type() != MenuController::EXIT_NONE) { | 127 if (!controller || controller->exit_type() != MenuController::EXIT_NONE) { |
| (...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 490 | 495 |
| 491 void MenuItemView::Layout() { | 496 void MenuItemView::Layout() { |
| 492 if (!has_children()) | 497 if (!has_children()) |
| 493 return; | 498 return; |
| 494 | 499 |
| 495 if (child_count() == 1 && GetTitle().size() == 0) { | 500 if (child_count() == 1 && GetTitle().size() == 0) { |
| 496 // We only have one child and no title so let the view take over all the | 501 // We only have one child and no title so let the view take over all the |
| 497 // space. | 502 // space. |
| 498 View* child = child_at(0); | 503 View* child = child_at(0); |
| 499 gfx::Size size = child->GetPreferredSize(); | 504 gfx::Size size = child->GetPreferredSize(); |
| 500 child->SetBounds(label_start_, GetTopMargin(), size.width(), size.height()); | 505 child->SetBounds(0, GetTopMargin(), size.width(), size.height()); |
| 501 } else { | 506 } else { |
| 502 // Child views are laid out right aligned and given the full height. To | 507 // Child views are laid out right aligned and given the full height. To |
| 503 // right align start with the last view and progress to the first. | 508 // right align start with the last view and progress to the first. |
| 504 for (int i = child_count() - 1, x = width() - item_right_margin_; i >= 0; | 509 for (int i = child_count() - 1, x = width() - item_right_margin_; i >= 0; |
| 505 --i) { | 510 --i) { |
| 506 View* child = child_at(i); | 511 View* child = child_at(i); |
| 507 int width = child->GetPreferredSize().width(); | 512 int width = child->GetPreferredSize().width(); |
| 508 child->SetBounds(x - width, 0, width, height()); | 513 child->SetBounds(x - width, 0, width, height()); |
| 509 x -= width - kChildXPadding; | 514 x -= width - kChildXPadding; |
| 510 } | 515 } |
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 782 return string16(); | 787 return string16(); |
| 783 } | 788 } |
| 784 | 789 |
| 785 Accelerator accelerator; | 790 Accelerator accelerator; |
| 786 return (GetDelegate() && | 791 return (GetDelegate() && |
| 787 GetDelegate()->GetAccelerator(GetCommand(), &accelerator)) ? | 792 GetDelegate()->GetAccelerator(GetCommand(), &accelerator)) ? |
| 788 accelerator.GetShortcutText() : string16(); | 793 accelerator.GetShortcutText() : string16(); |
| 789 } | 794 } |
| 790 | 795 |
| 791 } // namespace views | 796 } // namespace views |
| OLD | NEW |