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

Side by Side Diff: chrome/browser/ui/views/frame/opaque_browser_frame_view.cc

Issue 1682373002: Misc. small changes in preparation for moving popup mode edge drawing. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix CrOS build Created 4 years, 10 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
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 "chrome/browser/ui/views/frame/opaque_browser_frame_view.h" 5 #include "chrome/browser/ui/views/frame/opaque_browser_frame_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 #endif 58 #endif
59 59
60 using content::WebContents; 60 using content::WebContents;
61 61
62 namespace { 62 namespace {
63 63
64 // In the window corners, the resize areas don't actually expand bigger, but the 64 // In the window corners, the resize areas don't actually expand bigger, but the
65 // 16 px at the end of each edge triggers diagonal resizing. 65 // 16 px at the end of each edge triggers diagonal resizing.
66 const int kResizeAreaCornerSize = 16; 66 const int kResizeAreaCornerSize = 16;
67 67
68 // The content edge images have a shadow built into them.
69 const int kContentEdgeShadowThickness = 2;
70
71 #if !defined(OS_WIN) 68 #if !defined(OS_WIN)
72 // The icon never shrinks below 16 px on a side. 69 // The icon never shrinks below 16 px on a side.
73 const int kIconMinimumSize = 16; 70 const int kIconMinimumSize = 16;
74 #endif 71 #endif
75 72
76 } // namespace 73 } // namespace
77 74
78 /////////////////////////////////////////////////////////////////////////////// 75 ///////////////////////////////////////////////////////////////////////////////
79 // OpaqueBrowserFrameView, public: 76 // OpaqueBrowserFrameView, public:
80 77
78 // static
79 int OpaqueBrowserFrameView::kContentEdgeShadowThickness = 2;
80
81 OpaqueBrowserFrameView::OpaqueBrowserFrameView(BrowserFrame* frame, 81 OpaqueBrowserFrameView::OpaqueBrowserFrameView(BrowserFrame* frame,
82 BrowserView* browser_view) 82 BrowserView* browser_view)
83 : BrowserNonClientFrameView(frame, browser_view), 83 : BrowserNonClientFrameView(frame, browser_view),
84 layout_(new OpaqueBrowserFrameViewLayout(this)), 84 layout_(new OpaqueBrowserFrameViewLayout(this)),
85 minimize_button_(nullptr), 85 minimize_button_(nullptr),
86 maximize_button_(nullptr), 86 maximize_button_(nullptr),
87 restore_button_(nullptr), 87 restore_button_(nullptr),
88 close_button_(nullptr), 88 close_button_(nullptr),
89 window_icon_(nullptr), 89 window_icon_(nullptr),
90 window_title_(nullptr), 90 window_title_(nullptr),
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after
711 } 711 }
712 } 712 }
713 713
714 void OpaqueBrowserFrameView::PaintClientEdge(gfx::Canvas* canvas) const { 714 void OpaqueBrowserFrameView::PaintClientEdge(gfx::Canvas* canvas) const {
715 gfx::Rect client_bounds = 715 gfx::Rect client_bounds =
716 layout_->CalculateClientAreaBounds(width(), height()); 716 layout_->CalculateClientAreaBounds(width(), height());
717 const int x = client_bounds.x(); 717 const int x = client_bounds.x();
718 int y = client_bounds.y(); 718 int y = client_bounds.y();
719 const int w = client_bounds.width(); 719 const int w = client_bounds.width();
720 const int right = client_bounds.right(); 720 const int right = client_bounds.right();
721 const bool normal_mode = browser_view()->IsTabStripVisible(); 721 const bool tabstrip_visible = browser_view()->IsTabStripVisible();
722 const bool md = ui::MaterialDesignController::IsModeMaterial(); 722 const bool md = ui::MaterialDesignController::IsModeMaterial();
723 const ui::ThemeProvider* tp = GetThemeProvider(); 723 const ui::ThemeProvider* tp = GetThemeProvider();
724 const SkColor toolbar_color = 724 const SkColor toolbar_color =
725 normal_mode 725 tabstrip_visible
726 ? tp->GetColor(ThemeProperties::COLOR_TOOLBAR) 726 ? tp->GetColor(ThemeProperties::COLOR_TOOLBAR)
727 : ThemeProperties::GetDefaultColor(ThemeProperties::COLOR_TOOLBAR, 727 : ThemeProperties::GetDefaultColor(ThemeProperties::COLOR_TOOLBAR,
728 browser_view()->IsOffTheRecord()); 728 browser_view()->IsOffTheRecord());
729 729
730 const gfx::Rect toolbar_bounds(browser_view()->GetToolbarBounds()); 730 const gfx::Rect toolbar_bounds(browser_view()->GetToolbarBounds());
731 int img_y_offset = 0; 731 int img_y_offset = 0;
732 if (normal_mode) { 732 if (tabstrip_visible) {
733 // Pre-Material Design, the client edge images start below the toolbar. In 733 // Pre-Material Design, the client edge images start below the toolbar. In
734 // MD the client edge images start at the top of the toolbar. 734 // MD the client edge images start at the top of the toolbar.
735 y += md ? toolbar_bounds.y() : toolbar_bounds.bottom(); 735 y += md ? toolbar_bounds.y() : toolbar_bounds.bottom();
736 } else { 736 } else {
737 // The toolbar isn't going to draw a top edge for us, so draw one ourselves. 737 // The toolbar isn't going to draw a top edge for us, so draw one ourselves.
738 if (IsToolbarVisible()) { 738 if (IsToolbarVisible()) {
739 y += toolbar_bounds.y() + kContentEdgeShadowThickness + 739 y += toolbar_bounds.y() + kContentEdgeShadowThickness +
740 kClientEdgeThickness; 740 kClientEdgeThickness;
741 } 741 }
742 client_bounds.set_y(y); 742 client_bounds.set_y(y);
(...skipping 28 matching lines...) Expand all
771 img_w, height, right, top_y, img_w, height, false); 771 img_w, height, right, top_y, img_w, height, false);
772 } 772 }
773 } 773 }
774 774
775 // In maximized mode, the only edge to draw is the top one, so we're done. 775 // In maximized mode, the only edge to draw is the top one, so we're done.
776 if (layout_->IsTitleBarCondensed()) 776 if (layout_->IsTitleBarCondensed())
777 return; 777 return;
778 778
779 const int img_y = y + img_y_offset; 779 const int img_y = y + img_y_offset;
780 const int bottom = std::max(y, height() - NonClientBorderThickness()); 780 const int bottom = std::max(y, height() - NonClientBorderThickness());
781 int height = bottom - img_y; 781 const int height = bottom - y;
782 int img_h = bottom - img_y;
sky 2016/02/10 17:22:35 nit: const to be consistent with the others.
Peter Kasting 2016/02/11 06:02:32 Done.
782 783
783 // Draw the client edge images. For non-MD, we fill the toolbar color 784 // Draw the client edge images. For non-MD, we fill the toolbar color
784 // underneath these images so they will lighten/darken it appropriately to 785 // underneath these images so they will lighten/darken it appropriately to
785 // create a "3D shaded" effect. For MD, where we want a flatter appearance, 786 // create a "3D shaded" effect. For MD, where we want a flatter appearance,
786 // we do the filling afterwards so the user sees the unmodified toolbar color. 787 // we do the filling afterwards so the user sees the unmodified toolbar color.
787 if (!md) 788 if (!md)
788 FillClientEdgeRects(x, y, right, bottom, toolbar_color, canvas); 789 FillClientEdgeRects(x, y, w, height, toolbar_color, canvas);
789 gfx::ImageSkia* right_image = tp->GetImageSkiaNamed(IDR_CONTENT_RIGHT_SIDE); 790 gfx::ImageSkia* right_image = tp->GetImageSkiaNamed(IDR_CONTENT_RIGHT_SIDE);
790 const int img_w = right_image->width(); 791 const int img_w = right_image->width();
791 canvas->TileImageInt(*right_image, right, img_y, img_w, height); 792 canvas->TileImageInt(*right_image, right, img_y, img_w, img_h);
792 canvas->DrawImageInt(*tp->GetImageSkiaNamed(IDR_CONTENT_BOTTOM_RIGHT_CORNER), 793 canvas->DrawImageInt(*tp->GetImageSkiaNamed(IDR_CONTENT_BOTTOM_RIGHT_CORNER),
793 right, bottom); 794 right, bottom);
794 gfx::ImageSkia* bottom_image = 795 gfx::ImageSkia* bottom_image =
795 tp->GetImageSkiaNamed(IDR_CONTENT_BOTTOM_CENTER); 796 tp->GetImageSkiaNamed(IDR_CONTENT_BOTTOM_CENTER);
796 canvas->TileImageInt(*bottom_image, x, bottom, w, bottom_image->height()); 797 canvas->TileImageInt(*bottom_image, x, bottom, w, bottom_image->height());
797 canvas->DrawImageInt(*tp->GetImageSkiaNamed(IDR_CONTENT_BOTTOM_LEFT_CORNER), 798 canvas->DrawImageInt(*tp->GetImageSkiaNamed(IDR_CONTENT_BOTTOM_LEFT_CORNER),
798 x - img_w, bottom); 799 x - img_w, bottom);
799 canvas->TileImageInt(*tp->GetImageSkiaNamed(IDR_CONTENT_LEFT_SIDE), x - img_w, 800 canvas->TileImageInt(*tp->GetImageSkiaNamed(IDR_CONTENT_LEFT_SIDE), x - img_w,
800 img_y, img_w, height); 801 img_y, img_w, img_h);
801 if (md) 802 if (md)
802 FillClientEdgeRects(x, y, right, bottom, toolbar_color, canvas); 803 FillClientEdgeRects(x, y, w, height, toolbar_color, canvas);
803 } 804 }
804 805
805 void OpaqueBrowserFrameView::FillClientEdgeRects(int x, 806 void OpaqueBrowserFrameView::FillClientEdgeRects(int x,
806 int y, 807 int y,
807 int right, 808 int w,
808 int bottom, 809 int height,
809 SkColor color, 810 SkColor color,
810 gfx::Canvas* canvas) const { 811 gfx::Canvas* canvas) const {
811 gfx::Rect side(x - kClientEdgeThickness, y, kClientEdgeThickness, 812 x -= kClientEdgeThickness;
812 bottom + kClientEdgeThickness - y); 813 gfx::Rect side(x, y, kClientEdgeThickness, height);
813 canvas->FillRect(side, color); 814 canvas->FillRect(side, color);
814 canvas->FillRect(gfx::Rect(x, bottom, right - x, kClientEdgeThickness), 815 canvas->FillRect(gfx::Rect(x, y + height, w + (2 * kClientEdgeThickness),
sky 2016/02/10 17:22:35 Isn't this different than the old because you've m
Peter Kasting 2016/02/11 06:02:32 Yes, and this is intentional. I'm still drawing o
816 kClientEdgeThickness),
815 color); 817 color);
816 side.set_x(right); 818 side.Offset(w + kClientEdgeThickness, 0);
817 canvas->FillRect(side, color); 819 canvas->FillRect(side, color);
818 } 820 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698