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

Side by Side Diff: chrome/browser/ui/views/toolbar/toolbar_view.cc

Issue 1455193003: Draw popup window toolbars as only containing a location bar. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@arbitrary_heights
Patch Set: Glass cleanups Created 5 years, 1 month 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 | « chrome/browser/ui/views/toolbar/toolbar_view.h ('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 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/toolbar_view.h" 5 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/i18n/number_formatting.h" 10 #include "base/i18n/number_formatting.h"
(...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 browser_actions_->Layout(); 621 browser_actions_->Layout();
622 622
623 // Extend the app menu to the screen's right edge in maximized mode just like 623 // Extend the app menu to the screen's right edge in maximized mode just like
624 // we extend the back button to the left edge. 624 // we extend the back button to the left edge.
625 if (maximized) 625 if (maximized)
626 app_menu_width += insets.right(); 626 app_menu_width += insets.right();
627 app_menu_button_->SetBounds(next_element_x, child_y, app_menu_width, 627 app_menu_button_->SetBounds(next_element_x, child_y, app_menu_width,
628 child_height); 628 child_height);
629 } 629 }
630 630
631 void ToolbarView::OnPaint(gfx::Canvas* canvas) {
632 View::OnPaint(canvas);
633
634 if (is_display_mode_normal())
635 return;
636
637 // For glass, we need to draw a black line below the location bar to separate
638 // it from the content area. For non-glass, the NonClientView draws the
639 // toolbar background below the location bar for us.
640 // NOTE: Keep this in sync with BrowserView::GetInfoBarSeparatorColor()!
641 if (GetWidget()->ShouldWindowContentsBeTransparent())
642 canvas->FillRect(gfx::Rect(0, height() - 1, width(), 1), SK_ColorBLACK);
643 }
644
645 void ToolbarView::OnThemeChanged() { 631 void ToolbarView::OnThemeChanged() {
646 LoadImages(); 632 LoadImages();
647 } 633 }
648 634
649 const char* ToolbarView::GetClassName() const { 635 const char* ToolbarView::GetClassName() const {
650 return kViewClassName; 636 return kViewClassName;
651 } 637 }
652 638
653 bool ToolbarView::AcceleratorPressed(const ui::Accelerator& accelerator) { 639 bool ToolbarView::AcceleratorPressed(const ui::Accelerator& accelerator) {
654 const views::View* focused_view = focus_manager()->GetFocusedView(); 640 const views::View* focused_view = focus_manager()->GetFocusedView();
655 if (focused_view && (focused_view->id() == VIEW_ID_OMNIBOX)) 641 if (focused_view && (focused_view->id() == VIEW_ID_OMNIBOX))
656 return false; // Let the omnibox handle all accelerator events. 642 return false; // Let the omnibox handle all accelerator events.
657 return AccessiblePaneView::AcceleratorPressed(accelerator); 643 return AccessiblePaneView::AcceleratorPressed(accelerator);
658 } 644 }
659 645
660 bool ToolbarView::ShouldPaintBackground() const {
661 return display_mode_ == DISPLAYMODE_NORMAL;
662 }
663
664 //////////////////////////////////////////////////////////////////////////////// 646 ////////////////////////////////////////////////////////////////////////////////
665 // ToolbarView, protected: 647 // ToolbarView, protected:
666 648
667 // Override this so that when the user presses F6 to rotate toolbar panes, 649 // Override this so that when the user presses F6 to rotate toolbar panes,
668 // the location bar gets focus, not the first control in the toolbar - and 650 // the location bar gets focus, not the first control in the toolbar - and
669 // also so that it selects all content in the location bar. 651 // also so that it selects all content in the location bar.
670 bool ToolbarView::SetPaneFocusAndFocusDefault() { 652 bool ToolbarView::SetPaneFocusAndFocusDefault() {
671 if (!location_bar_->HasFocus()) { 653 if (!location_bar_->HasFocus()) {
672 SetPaneFocus(location_bar_); 654 SetPaneFocus(location_bar_);
673 location_bar_->FocusLocation(true); 655 location_bar_->FocusLocation(true);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
730 #if defined(OS_WIN) 712 #if defined(OS_WIN)
731 ConflictingModuleView::MaybeShow(browser_, app_menu_button_); 713 ConflictingModuleView::MaybeShow(browser_, app_menu_button_);
732 #endif 714 #endif
733 } 715 }
734 incompatibility_badge_showing = true; 716 incompatibility_badge_showing = true;
735 return; 717 return;
736 } 718 }
737 } 719 }
738 720
739 int ToolbarView::PopupTopSpacing() const { 721 int ToolbarView::PopupTopSpacing() const {
740 const int kPopupTopSpacingNonGlass = 3; 722 const int kAdditionalPopupTopSpacingNonGlass = 2;
741 return GetWidget()->ShouldWindowContentsBeTransparent() ? 723 return views::NonClientFrameView::kClientEdgeThickness +
742 0 : kPopupTopSpacingNonGlass; 724 (GetWidget()->ShouldWindowContentsBeTransparent() ?
725 0 : kAdditionalPopupTopSpacingNonGlass);
743 } 726 }
744 727
745 gfx::Size ToolbarView::SizeForContentSize(gfx::Size size) const { 728 gfx::Size ToolbarView::SizeForContentSize(gfx::Size size) const {
746 if (is_display_mode_normal()) { 729 if (is_display_mode_normal()) {
747 // For Material Design the size of the toolbar is computed using the size 730 // For Material Design the size of the toolbar is computed using the size
748 // of the location bar and constant padding values. For non-material the 731 // of the location bar and constant padding values. For non-material the
749 // size is based on the provided assets. 732 // size is based on the provided assets.
750 if (ui::MaterialDesignController::IsModeMaterial()) { 733 if (ui::MaterialDesignController::IsModeMaterial()) {
751 int content_height = std::max(back_->GetPreferredSize().height(), 734 int content_height = std::max(back_->GetPreferredSize().height(),
752 location_bar_->GetPreferredSize().height()); 735 location_bar_->GetPreferredSize().height());
753 int padding = GetLayoutInsets(TOOLBAR).height(); 736 int padding = GetLayoutInsets(TOOLBAR).height();
754 size.SetToMax(gfx::Size(0, content_height + padding)); 737 size.SetToMax(gfx::Size(0, content_height + padding));
755 } else { 738 } else {
756 gfx::ImageSkia* normal_background = 739 gfx::ImageSkia* normal_background =
757 GetThemeProvider()->GetImageSkiaNamed(IDR_CONTENT_TOP_CENTER); 740 GetThemeProvider()->GetImageSkiaNamed(IDR_CONTENT_TOP_CENTER);
758 size.SetToMax( 741 size.SetToMax(
759 gfx::Size(0, normal_background->height() - content_shadow_height())); 742 gfx::Size(0, normal_background->height() - content_shadow_height()));
760 } 743 }
761 } else if (size.height() == 0) { 744 } else if (size.height() == 0) {
762 // Location mode with a 0 height location bar. If on ash, expand by one 745 // Location mode with a 0 height location bar. If on ash, expand by one
763 // pixel to show a border in the title bar, otherwise leave the size as zero 746 // pixel to show a border in the title bar, otherwise leave the size as zero
764 // height. 747 // height.
765 const int kAshBorderSpacing = 1; 748 const int kAshBorderSpacing = 1;
766 if (browser_->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH) 749 if (browser_->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH)
767 size.Enlarge(0, kAshBorderSpacing); 750 size.Enlarge(0, kAshBorderSpacing);
768 } else { 751 } else {
769 const int kPopupBottomSpacingGlass = 1;
770 const int kPopupBottomSpacingNonGlass = 2;
771 size.Enlarge( 752 size.Enlarge(
772 0, 753 0, PopupTopSpacing() + views::NonClientFrameView::kClientEdgeThickness);
773 PopupTopSpacing() + (GetWidget()->ShouldWindowContentsBeTransparent() ?
774 kPopupBottomSpacingGlass : kPopupBottomSpacingNonGlass));
775 } 754 }
776 return size; 755 return size;
777 } 756 }
778 757
779 void ToolbarView::LoadImages() { 758 void ToolbarView::LoadImages() {
780 ui::ThemeProvider* tp = GetThemeProvider(); 759 ui::ThemeProvider* tp = GetThemeProvider();
781 760
782 if (ui::MaterialDesignController::IsModeMaterial()) { 761 if (ui::MaterialDesignController::IsModeMaterial()) {
783 const int kButtonSize = 16; 762 const int kButtonSize = 16;
784 const SkColor normal_color = 763 const SkColor normal_color =
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
838 void ToolbarView::OnShowHomeButtonChanged() { 817 void ToolbarView::OnShowHomeButtonChanged() {
839 Layout(); 818 Layout();
840 SchedulePaint(); 819 SchedulePaint();
841 } 820 }
842 821
843 int ToolbarView::content_shadow_height() const { 822 int ToolbarView::content_shadow_height() const {
844 return GetLayoutConstant( 823 return GetLayoutConstant(
845 (browser_->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH) ? 824 (browser_->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH) ?
846 TOOLBAR_CONTENT_SHADOW_HEIGHT_ASH : TOOLBAR_CONTENT_SHADOW_HEIGHT); 825 TOOLBAR_CONTENT_SHADOW_HEIGHT_ASH : TOOLBAR_CONTENT_SHADOW_HEIGHT);
847 } 826 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/toolbar/toolbar_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698