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

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

Issue 273223002: views: Make view::Views::GetPreferredSize() const. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More compile fix for ToT Created 6 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « ui/views/controls/menu/menu_item_view.h ('k') | ui/views/controls/menu/menu_model_adapter.h » ('j') | 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_item_view.h" 5 #include "ui/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/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "grit/ui_resources.h" 10 #include "grit/ui_resources.h"
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 icon_view_ = icon_view; 396 icon_view_ = icon_view;
397 } 397 }
398 Layout(); 398 Layout();
399 SchedulePaint(); 399 SchedulePaint();
400 } 400 }
401 401
402 void MenuItemView::OnPaint(gfx::Canvas* canvas) { 402 void MenuItemView::OnPaint(gfx::Canvas* canvas) {
403 PaintButton(canvas, PB_NORMAL); 403 PaintButton(canvas, PB_NORMAL);
404 } 404 }
405 405
406 gfx::Size MenuItemView::GetPreferredSize() { 406 gfx::Size MenuItemView::GetPreferredSize() const {
407 const MenuItemDimensions& dimensions(GetDimensions()); 407 const MenuItemDimensions& dimensions(GetDimensions());
408 return gfx::Size(dimensions.standard_width + dimensions.children_width, 408 return gfx::Size(dimensions.standard_width + dimensions.children_width,
409 dimensions.height); 409 dimensions.height);
410 } 410 }
411 411
412 const MenuItemView::MenuItemDimensions& MenuItemView::GetDimensions() { 412 const MenuItemView::MenuItemDimensions& MenuItemView::GetDimensions() const {
413 if (!is_dimensions_valid()) 413 if (!is_dimensions_valid())
414 dimensions_ = CalculateDimensions(); 414 dimensions_ = CalculateDimensions();
415 DCHECK(is_dimensions_valid()); 415 DCHECK(is_dimensions_valid());
416 return dimensions_; 416 return dimensions_;
417 } 417 }
418 418
419 MenuController* MenuItemView::GetMenuController() { 419 MenuController* MenuItemView::GetMenuController() {
420 return GetRootMenuItem()->controller_; 420 return GetRootMenuItem()->controller_;
421 } 421 }
422 422
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 if (GetRootMenuItem()->has_mnemonics_) { 682 if (GetRootMenuItem()->has_mnemonics_) {
683 if (GetMenuConfig().show_mnemonics || GetRootMenuItem()->show_mnemonics_) { 683 if (GetMenuConfig().show_mnemonics || GetRootMenuItem()->show_mnemonics_) {
684 flags |= gfx::Canvas::SHOW_PREFIX; 684 flags |= gfx::Canvas::SHOW_PREFIX;
685 } else { 685 } else {
686 flags |= gfx::Canvas::HIDE_PREFIX; 686 flags |= gfx::Canvas::HIDE_PREFIX;
687 } 687 }
688 } 688 }
689 return flags; 689 return flags;
690 } 690 }
691 691
692 const gfx::FontList& MenuItemView::GetFontList() { 692 const gfx::FontList& MenuItemView::GetFontList() const {
693 const MenuDelegate* delegate = GetDelegate(); 693 const MenuDelegate* delegate = GetDelegate();
694 if (delegate) { 694 if (delegate) {
695 const gfx::FontList* font_list = delegate->GetLabelFontList(GetCommand()); 695 const gfx::FontList* font_list = delegate->GetLabelFontList(GetCommand());
696 if (font_list) 696 if (font_list)
697 return *font_list; 697 return *font_list;
698 } 698 }
699 return GetMenuConfig().font_list; 699 return GetMenuConfig().font_list;
700 } 700 }
701 701
702 void MenuItemView::AddEmptyMenus() { 702 void MenuItemView::AddEmptyMenus() {
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
888 if (!HasSubmenu()) 888 if (!HasSubmenu())
889 return; 889 return;
890 890
891 submenu_->Close(); 891 submenu_->Close();
892 for (int i = 0, item_count = submenu_->GetMenuItemCount(); i < item_count; 892 for (int i = 0, item_count = submenu_->GetMenuItemCount(); i < item_count;
893 ++i) { 893 ++i) {
894 submenu_->GetMenuItemAt(i)->DestroyAllMenuHosts(); 894 submenu_->GetMenuItemAt(i)->DestroyAllMenuHosts();
895 } 895 }
896 } 896 }
897 897
898 int MenuItemView::GetTopMargin() { 898 int MenuItemView::GetTopMargin() const {
899 if (top_margin_ >= 0) 899 if (top_margin_ >= 0)
900 return top_margin_; 900 return top_margin_;
901 901
902 MenuItemView* root = GetRootMenuItem(); 902 const MenuItemView* root = GetRootMenuItem();
903 return root && root->has_icons_ 903 return root && root->has_icons_
904 ? GetMenuConfig().item_top_margin : 904 ? GetMenuConfig().item_top_margin :
905 GetMenuConfig().item_no_icon_top_margin; 905 GetMenuConfig().item_no_icon_top_margin;
906 } 906 }
907 907
908 int MenuItemView::GetBottomMargin() { 908 int MenuItemView::GetBottomMargin() const {
909 if (bottom_margin_ >= 0) 909 if (bottom_margin_ >= 0)
910 return bottom_margin_; 910 return bottom_margin_;
911 911
912 MenuItemView* root = GetRootMenuItem(); 912 const MenuItemView* root = GetRootMenuItem();
913 return root && root->has_icons_ 913 return root && root->has_icons_
914 ? GetMenuConfig().item_bottom_margin : 914 ? GetMenuConfig().item_bottom_margin :
915 GetMenuConfig().item_no_icon_bottom_margin; 915 GetMenuConfig().item_no_icon_bottom_margin;
916 } 916 }
917 917
918 gfx::Size MenuItemView::GetChildPreferredSize() { 918 gfx::Size MenuItemView::GetChildPreferredSize() const {
919 if (!has_children()) 919 if (!has_children())
920 return gfx::Size(); 920 return gfx::Size();
921 921
922 if (IsContainer()) { 922 if (IsContainer())
923 View* child = child_at(0); 923 return child_at(0)->GetPreferredSize();
924 return child->GetPreferredSize();
925 }
926 924
927 int width = 0; 925 int width = 0;
928 for (int i = 0; i < child_count(); ++i) { 926 for (int i = 0; i < child_count(); ++i) {
929 View* child = child_at(i); 927 const View* child = child_at(i);
930 if (icon_view_ && (icon_view_ == child)) 928 if (icon_view_ && (icon_view_ == child))
931 continue; 929 continue;
932 if (i) 930 if (i)
933 width += kChildXPadding; 931 width += kChildXPadding;
934 width += child->GetPreferredSize().width(); 932 width += child->GetPreferredSize().width();
935 } 933 }
936 int height = 0; 934 int height = 0;
937 if (icon_view_) 935 if (icon_view_)
938 height = icon_view_->GetPreferredSize().height(); 936 height = icon_view_->GetPreferredSize().height();
939 937
940 // If there is no icon view it returns a height of 0 to indicate that 938 // If there is no icon view it returns a height of 0 to indicate that
941 // we should use the title height instead. 939 // we should use the title height instead.
942 return gfx::Size(width, height); 940 return gfx::Size(width, height);
943 } 941 }
944 942
945 MenuItemView::MenuItemDimensions MenuItemView::CalculateDimensions() { 943 MenuItemView::MenuItemDimensions MenuItemView::CalculateDimensions() const {
946 gfx::Size child_size = GetChildPreferredSize(); 944 gfx::Size child_size = GetChildPreferredSize();
947 945
948 MenuItemDimensions dimensions; 946 MenuItemDimensions dimensions;
949 // Get the container height. 947 // Get the container height.
950 dimensions.children_width = child_size.width(); 948 dimensions.children_width = child_size.width();
951 dimensions.height = child_size.height(); 949 dimensions.height = child_size.height();
952 // Adjust item content height if menu has both items with and without icons. 950 // Adjust item content height if menu has both items with and without icons.
953 // This way all menu items will have the same height. 951 // This way all menu items will have the same height.
954 if (!icon_view_ && GetRootMenuItem()->has_icons()) { 952 if (!icon_view_ && GetRootMenuItem()->has_icons()) {
955 dimensions.height = std::max(dimensions.height, 953 dimensions.height = std::max(dimensions.height,
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
993 // Determine the height to use. 991 // Determine the height to use.
994 dimensions.height = 992 dimensions.height =
995 std::max(dimensions.height, 993 std::max(dimensions.height,
996 (subtitle_.empty() ? 0 : font_list.GetHeight()) + 994 (subtitle_.empty() ? 0 : font_list.GetHeight()) +
997 font_list.GetHeight() + GetBottomMargin() + GetTopMargin()); 995 font_list.GetHeight() + GetBottomMargin() + GetTopMargin());
998 dimensions.height = std::max(dimensions.height, 996 dimensions.height = std::max(dimensions.height,
999 GetMenuConfig().item_min_height); 997 GetMenuConfig().item_min_height);
1000 return dimensions; 998 return dimensions;
1001 } 999 }
1002 1000
1003 int MenuItemView::GetLabelStartForThisItem() { 1001 int MenuItemView::GetLabelStartForThisItem() const {
1004 int label_start = label_start_ + left_icon_margin_ + right_icon_margin_; 1002 int label_start = label_start_ + left_icon_margin_ + right_icon_margin_;
1005 if ((type_ == CHECKBOX || type_ == RADIO) && icon_view_) { 1003 if ((type_ == CHECKBOX || type_ == RADIO) && icon_view_) {
1006 label_start += icon_view_->size().width() + 1004 label_start += icon_view_->size().width() +
1007 GetMenuConfig().icon_to_label_padding; 1005 GetMenuConfig().icon_to_label_padding;
1008 } 1006 }
1009 return label_start; 1007 return label_start;
1010 } 1008 }
1011 1009
1012 base::string16 MenuItemView::GetMinorText() { 1010 base::string16 MenuItemView::GetMinorText() const {
1013 if (id() == kEmptyMenuItemViewID) { 1011 if (id() == kEmptyMenuItemViewID) {
1014 // Don't query the delegate for menus that represent no children. 1012 // Don't query the delegate for menus that represent no children.
1015 return base::string16(); 1013 return base::string16();
1016 } 1014 }
1017 1015
1018 ui::Accelerator accelerator; 1016 ui::Accelerator accelerator;
1019 if (GetMenuConfig().show_accelerators && GetDelegate() && GetCommand() && 1017 if (GetMenuConfig().show_accelerators && GetDelegate() && GetCommand() &&
1020 GetDelegate()->GetAccelerator(GetCommand(), &accelerator)) { 1018 GetDelegate()->GetAccelerator(GetCommand(), &accelerator)) {
1021 return accelerator.GetShortcutText(); 1019 return accelerator.GetShortcutText();
1022 } 1020 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1065 } else { 1063 } else {
1066 const Type& type = menu_item->GetType(); 1064 const Type& type = menu_item->GetType();
1067 if (type == CHECKBOX || type == RADIO) 1065 if (type == CHECKBOX || type == RADIO)
1068 return true; 1066 return true;
1069 } 1067 }
1070 } 1068 }
1071 return false; 1069 return false;
1072 } 1070 }
1073 1071
1074 } // namespace views 1072 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/menu/menu_item_view.h ('k') | ui/views/controls/menu/menu_model_adapter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698