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

Side by Side Diff: chrome/browser/ui/views/toolbar/wrench_menu.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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/ui/views/toolbar/wrench_menu.h" 5 #include "chrome/browser/ui/views/toolbar/wrench_menu.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <set> 9 #include <set>
10 10
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 command_id <= WrenchMenuModel::kMaxRecentTabsCommandId; 91 command_id <= WrenchMenuModel::kMaxRecentTabsCommandId;
92 } 92 }
93 93
94 // Subclass of ImageButton whose preferred size includes the size of the border. 94 // Subclass of ImageButton whose preferred size includes the size of the border.
95 class FullscreenButton : public ImageButton { 95 class FullscreenButton : public ImageButton {
96 public: 96 public:
97 explicit FullscreenButton(views::ButtonListener* listener) 97 explicit FullscreenButton(views::ButtonListener* listener)
98 : ImageButton(listener) { } 98 : ImageButton(listener) { }
99 99
100 // Overridden from ImageButton. 100 // Overridden from ImageButton.
101 virtual gfx::Size GetPreferredSize() OVERRIDE { 101 virtual gfx::Size GetPreferredSize() const OVERRIDE {
102 gfx::Size pref = ImageButton::GetPreferredSize(); 102 gfx::Size pref = ImageButton::GetPreferredSize();
103 if (border()) { 103 if (border()) {
104 gfx::Insets insets = border()->GetInsets(); 104 gfx::Insets insets = border()->GetInsets();
105 pref.Enlarge(insets.width(), insets.height()); 105 pref.Enlarge(insets.width(), insets.height());
106 } 106 }
107 return pref; 107 return pref;
108 } 108 }
109 109
110 private: 110 private:
111 DISALLOW_COPY_AND_ASSIGN(FullscreenButton); 111 DISALLOW_COPY_AND_ASSIGN(FullscreenButton);
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 virtual void WrenchMenuDestroyed() OVERRIDE { 428 virtual void WrenchMenuDestroyed() OVERRIDE {
429 menu_->RemoveObserver(this); 429 menu_->RemoveObserver(this);
430 menu_ = NULL; 430 menu_ = NULL;
431 menu_model_ = NULL; 431 menu_model_ = NULL;
432 } 432 }
433 433
434 protected: 434 protected:
435 WrenchMenu* menu() { return menu_; } 435 WrenchMenu* menu() { return menu_; }
436 MenuModel* menu_model() { return menu_model_; } 436 MenuModel* menu_model() { return menu_model_; }
437 437
438 bool use_new_menu() const { return menu_->use_new_menu(); }
439
438 private: 440 private:
439 // Hosting WrenchMenu. 441 // Hosting WrenchMenu.
440 // WARNING: this may be NULL during shutdown. 442 // WARNING: this may be NULL during shutdown.
441 WrenchMenu* menu_; 443 WrenchMenu* menu_;
442 444
443 // The menu model containing the increment/decrement/reset items. 445 // The menu model containing the increment/decrement/reset items.
444 // WARNING: this may be NULL during shutdown. 446 // WARNING: this may be NULL during shutdown.
445 MenuModel* menu_model_; 447 MenuModel* menu_model_;
446 448
447 DISALLOW_COPY_AND_ASSIGN(WrenchMenuView); 449 DISALLOW_COPY_AND_ASSIGN(WrenchMenuView);
448 }; 450 };
449 451
450 class ButtonContainerMenuItemView : public MenuItemView { 452 class ButtonContainerMenuItemView : public MenuItemView {
451 public: 453 public:
452 // Constructor for use with button containing menu items which have a 454 // Constructor for use with button containing menu items which have a
453 // different height then normal items. 455 // different height then normal items.
454 ButtonContainerMenuItemView(MenuItemView* parent, int command_id, int height) 456 ButtonContainerMenuItemView(MenuItemView* parent, int command_id, int height)
455 : MenuItemView(parent, command_id, MenuItemView::NORMAL), 457 : MenuItemView(parent, command_id, MenuItemView::NORMAL),
456 height_(height) { 458 height_(height) {
457 }; 459 };
458 460
459 // Overridden from MenuItemView. 461 // Overridden from MenuItemView.
460 virtual gfx::Size GetChildPreferredSize() OVERRIDE { 462 virtual gfx::Size GetChildPreferredSize() const OVERRIDE {
461 gfx::Size size = MenuItemView::GetChildPreferredSize(); 463 gfx::Size size = MenuItemView::GetChildPreferredSize();
462 // When there is a height override given, we need to deduct our spacing 464 // When there is a height override given, we need to deduct our spacing
463 // above and below to get to the correct height to return here for the 465 // above and below to get to the correct height to return here for the
464 // child item. 466 // child item.
465 int height = height_ - GetTopMargin() - GetBottomMargin(); 467 int height = height_ - GetTopMargin() - GetBottomMargin();
466 if (height > size.height()) 468 if (height > size.height())
467 size.set_height(height); 469 size.set_height(height);
468 return size; 470 return size;
469 } 471 }
470 472
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 IDS_PASTE, 539 IDS_PASTE,
538 menu->use_new_menu() && menu->supports_new_separators_ ? 540 menu->use_new_menu() && menu->supports_new_separators_ ?
539 MenuButtonBackground::CENTER_BUTTON : 541 MenuButtonBackground::CENTER_BUTTON :
540 MenuButtonBackground::RIGHT_BUTTON, 542 MenuButtonBackground::RIGHT_BUTTON,
541 paste_index, 543 paste_index,
542 NULL); 544 NULL);
543 copy_background->SetOtherButtons(cut, paste); 545 copy_background->SetOtherButtons(cut, paste);
544 } 546 }
545 547
546 // Overridden from View. 548 // Overridden from View.
547 virtual gfx::Size GetPreferredSize() OVERRIDE { 549 virtual gfx::Size GetPreferredSize() const OVERRIDE {
548 // Returned height doesn't matter as MenuItemView forces everything to the 550 // Returned height doesn't matter as MenuItemView forces everything to the
549 // height of the menuitemview. 551 // height of the menuitemview.
550 return gfx::Size(GetMaxChildViewPreferredWidth() * child_count(), 0); 552 return gfx::Size(GetMaxChildViewPreferredWidth() * child_count(), 0);
551 } 553 }
552 554
553 virtual void Layout() OVERRIDE { 555 virtual void Layout() OVERRIDE {
554 // All buttons are given the same width. 556 // All buttons are given the same width.
555 int width = GetMaxChildViewPreferredWidth(); 557 int width = GetMaxChildViewPreferredWidth();
556 for (int i = 0; i < child_count(); ++i) 558 for (int i = 0; i < child_count(); ++i)
557 child_at(i)->SetBounds(i * width, 0, width, height()); 559 child_at(i)->SetBounds(i * width, 0, width, height());
558 } 560 }
559 561
560 // Overridden from ButtonListener. 562 // Overridden from ButtonListener.
561 virtual void ButtonPressed(views::Button* sender, 563 virtual void ButtonPressed(views::Button* sender,
562 const ui::Event& event) OVERRIDE { 564 const ui::Event& event) OVERRIDE {
563 menu()->CancelAndEvaluate(menu_model(), sender->tag()); 565 menu()->CancelAndEvaluate(menu_model(), sender->tag());
564 } 566 }
565 567
566 private: 568 private:
567 // Returns the max preferred width of all the children. 569 // Returns the max preferred width of all the children.
568 int GetMaxChildViewPreferredWidth() { 570 int GetMaxChildViewPreferredWidth() const {
569 int width = 0; 571 int width = 0;
570 for (int i = 0; i < child_count(); ++i) 572 for (int i = 0; i < child_count(); ++i)
571 width = std::max(width, child_at(i)->GetPreferredSize().width()); 573 width = std::max(width, child_at(i)->GetPreferredSize().width());
572 return width; 574 return width;
573 } 575 }
574 576
575 DISALLOW_COPY_AND_ASSIGN(CutCopyPasteView); 577 DISALLOW_COPY_AND_ASSIGN(CutCopyPasteView);
576 }; 578 };
577 579
578 // ZoomView -------------------------------------------------------------------- 580 // ZoomView --------------------------------------------------------------------
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
680 GetAccessibleNameForWrenchMenuItem( 682 GetAccessibleNameForWrenchMenuItem(
681 menu_model, fullscreen_index, IDS_ACCNAME_FULLSCREEN)); 683 menu_model, fullscreen_index, IDS_ACCNAME_FULLSCREEN));
682 AddChildView(fullscreen_button_); 684 AddChildView(fullscreen_button_);
683 685
684 UpdateZoomControls(); 686 UpdateZoomControls();
685 } 687 }
686 688
687 virtual ~ZoomView() {} 689 virtual ~ZoomView() {}
688 690
689 // Overridden from View. 691 // Overridden from View.
690 virtual gfx::Size GetPreferredSize() OVERRIDE { 692 virtual gfx::Size GetPreferredSize() const OVERRIDE {
691 // The increment/decrement button are forced to the same width. 693 // The increment/decrement button are forced to the same width.
692 int button_width = std::max(increment_button_->GetPreferredSize().width(), 694 int button_width = std::max(increment_button_->GetPreferredSize().width(),
693 decrement_button_->GetPreferredSize().width()); 695 decrement_button_->GetPreferredSize().width());
694 int zoom_padding = menu()->use_new_menu() ? 696 int zoom_padding = use_new_menu() ?
695 kTouchZoomPadding : kZoomPadding; 697 kTouchZoomPadding : kZoomPadding;
696 int fullscreen_width = fullscreen_button_->GetPreferredSize().width() + 698 int fullscreen_width = fullscreen_button_->GetPreferredSize().width() +
697 zoom_padding; 699 zoom_padding;
698 // Returned height doesn't matter as MenuItemView forces everything to the 700 // Returned height doesn't matter as MenuItemView forces everything to the
699 // height of the menuitemview. Note that we have overridden the height when 701 // height of the menuitemview. Note that we have overridden the height when
700 // constructing the menu. 702 // constructing the menu.
701 return gfx::Size(button_width + zoom_label_width_ + button_width + 703 return gfx::Size(button_width + zoom_label_width_ + button_width +
702 fullscreen_width, 0); 704 fullscreen_width, 0);
703 } 705 }
704 706
705 virtual void Layout() OVERRIDE { 707 virtual void Layout() OVERRIDE {
706 int x = 0; 708 int x = 0;
707 int button_width = std::max(increment_button_->GetPreferredSize().width(), 709 int button_width = std::max(increment_button_->GetPreferredSize().width(),
708 decrement_button_->GetPreferredSize().width()); 710 decrement_button_->GetPreferredSize().width());
709 gfx::Rect bounds(0, 0, button_width, height()); 711 gfx::Rect bounds(0, 0, button_width, height());
710 712
711 decrement_button_->SetBoundsRect(bounds); 713 decrement_button_->SetBoundsRect(bounds);
712 714
713 x += bounds.width(); 715 x += bounds.width();
714 bounds.set_x(x); 716 bounds.set_x(x);
715 bounds.set_width(zoom_label_width_); 717 bounds.set_width(zoom_label_width_);
716 zoom_label_->SetBoundsRect(bounds); 718 zoom_label_->SetBoundsRect(bounds);
717 719
718 x += bounds.width(); 720 x += bounds.width();
719 bounds.set_x(x); 721 bounds.set_x(x);
720 bounds.set_width(button_width); 722 bounds.set_width(button_width);
721 increment_button_->SetBoundsRect(bounds); 723 increment_button_->SetBoundsRect(bounds);
722 724
723 x += bounds.width() + (menu()->use_new_menu() ? 0 : kZoomPadding); 725 x += bounds.width() + (use_new_menu() ? 0 : kZoomPadding);
724 bounds.set_x(x); 726 bounds.set_x(x);
725 bounds.set_width(fullscreen_button_->GetPreferredSize().width() + 727 bounds.set_width(fullscreen_button_->GetPreferredSize().width() +
726 (menu()->use_new_menu() ? kTouchZoomPadding : 0)); 728 (use_new_menu() ? kTouchZoomPadding : 0));
727 fullscreen_button_->SetBoundsRect(bounds); 729 fullscreen_button_->SetBoundsRect(bounds);
728 } 730 }
729 731
730 // Overridden from ButtonListener. 732 // Overridden from ButtonListener.
731 virtual void ButtonPressed(views::Button* sender, 733 virtual void ButtonPressed(views::Button* sender,
732 const ui::Event& event) OVERRIDE { 734 const ui::Event& event) OVERRIDE {
733 if (sender->tag() == fullscreen_index_) { 735 if (sender->tag() == fullscreen_index_) {
734 menu()->CancelAndEvaluate(menu_model(), sender->tag()); 736 menu()->CancelAndEvaluate(menu_model(), sender->tag());
735 } else { 737 } else {
736 // Zoom buttons don't close the menu. 738 // Zoom buttons don't close the menu.
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after
1141 // These items are represented by child views. If ExecuteCommand is invoked 1143 // These items are represented by child views. If ExecuteCommand is invoked
1142 // it means the user clicked on the area around the buttons and we should 1144 // it means the user clicked on the area around the buttons and we should
1143 // not do anyting. 1145 // not do anyting.
1144 return; 1146 return;
1145 } 1147 }
1146 1148
1147 const Entry& entry = command_id_to_entry_.find(command_id)->second; 1149 const Entry& entry = command_id_to_entry_.find(command_id)->second;
1148 return entry.first->ActivatedAt(entry.second, mouse_event_flags); 1150 return entry.first->ActivatedAt(entry.second, mouse_event_flags);
1149 } 1151 }
1150 1152
1151 bool WrenchMenu::GetAccelerator(int command_id, ui::Accelerator* accelerator) { 1153 bool WrenchMenu::GetAccelerator(int command_id,
1154 ui::Accelerator* accelerator) const {
1152 if (IsBookmarkCommand(command_id)) 1155 if (IsBookmarkCommand(command_id))
1153 return false; 1156 return false;
1154 1157
1155 if (command_id == IDC_CUT || command_id == IDC_ZOOM_MINUS) { 1158 if (command_id == IDC_CUT || command_id == IDC_ZOOM_MINUS) {
1156 // These have special child views; don't show the accelerator for them. 1159 // These have special child views; don't show the accelerator for them.
1157 return false; 1160 return false;
1158 } 1161 }
1159 1162
1160 CommandIDToEntry::iterator ix = command_id_to_entry_.find(command_id); 1163 CommandIDToEntry::const_iterator ix = command_id_to_entry_.find(command_id);
1161 const Entry& entry = ix->second; 1164 const Entry& entry = ix->second;
1162 ui::Accelerator menu_accelerator; 1165 ui::Accelerator menu_accelerator;
1163 if (!entry.first->GetAcceleratorAt(entry.second, &menu_accelerator)) 1166 if (!entry.first->GetAcceleratorAt(entry.second, &menu_accelerator))
1164 return false; 1167 return false;
1165 1168
1166 *accelerator = ui::Accelerator(menu_accelerator.key_code(), 1169 *accelerator = ui::Accelerator(menu_accelerator.key_code(),
1167 menu_accelerator.modifiers()); 1170 menu_accelerator.modifiers());
1168 return true; 1171 return true;
1169 } 1172 }
1170 1173
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
1359 0, 1362 0,
1360 BookmarkMenuDelegate::SHOW_PERMANENT_FOLDERS, 1363 BookmarkMenuDelegate::SHOW_PERMANENT_FOLDERS,
1361 BOOKMARK_LAUNCH_LOCATION_WRENCH_MENU); 1364 BOOKMARK_LAUNCH_LOCATION_WRENCH_MENU);
1362 } 1365 }
1363 1366
1364 int WrenchMenu::ModelIndexFromCommandId(int command_id) const { 1367 int WrenchMenu::ModelIndexFromCommandId(int command_id) const {
1365 CommandIDToEntry::const_iterator ix = command_id_to_entry_.find(command_id); 1368 CommandIDToEntry::const_iterator ix = command_id_to_entry_.find(command_id);
1366 DCHECK(ix != command_id_to_entry_.end()); 1369 DCHECK(ix != command_id_to_entry_.end());
1367 return ix->second.second; 1370 return ix->second.second;
1368 } 1371 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/toolbar/wrench_menu.h ('k') | chrome/browser/ui/views/translate/translate_bubble_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698