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

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

Issue 1460483003: Fix opaque frame app mode windows to have correct toolbar/content separator. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix compile 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
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 418 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 } 429 }
430 430
431 bool OpaqueBrowserFrameView::IsFullscreen() const { 431 bool OpaqueBrowserFrameView::IsFullscreen() const {
432 return frame()->IsFullscreen(); 432 return frame()->IsFullscreen();
433 } 433 }
434 434
435 bool OpaqueBrowserFrameView::IsTabStripVisible() const { 435 bool OpaqueBrowserFrameView::IsTabStripVisible() const {
436 return browser_view()->IsTabStripVisible(); 436 return browser_view()->IsTabStripVisible();
437 } 437 }
438 438
439 bool OpaqueBrowserFrameView::IsToolbarVisible() const {
440 return browser_view()->IsToolbarVisible() &&
441 !browser_view()->GetToolbarBounds().IsEmpty();
sky 2015/11/18 17:00:34 It seems like this is called from code from layout
Peter Kasting 2015/11/18 19:46:24 I think you're right. I changed this to use the t
442 }
443
439 int OpaqueBrowserFrameView::GetTabStripHeight() const { 444 int OpaqueBrowserFrameView::GetTabStripHeight() const {
440 return browser_view()->GetTabStripHeight(); 445 return browser_view()->GetTabStripHeight();
441 } 446 }
442 447
443 gfx::Size OpaqueBrowserFrameView::GetTabstripPreferredSize() const { 448 gfx::Size OpaqueBrowserFrameView::GetTabstripPreferredSize() const {
444 gfx::Size s = browser_view()->tabstrip()->GetPreferredSize(); 449 gfx::Size s = browser_view()->tabstrip()->GetPreferredSize();
445 return s; 450 return s;
446 } 451 }
447 452
448 /////////////////////////////////////////////////////////////////////////////// 453 ///////////////////////////////////////////////////////////////////////////////
(...skipping 10 matching lines...) Expand all
459 PaintRestoredFrameBorder(canvas); 464 PaintRestoredFrameBorder(canvas);
460 465
461 // The window icon and title are painted by their respective views. 466 // The window icon and title are painted by their respective views.
462 /* TODO(pkasting): If this window is active, we should also draw a drop 467 /* TODO(pkasting): If this window is active, we should also draw a drop
463 * shadow on the title. This is tricky, because we don't want to hardcode a 468 * shadow on the title. This is tricky, because we don't want to hardcode a
464 * shadow color (since we want to work with various themes), but we can't 469 * shadow color (since we want to work with various themes), but we can't
465 * alpha-blend either (since the Windows text APIs don't really do this). 470 * alpha-blend either (since the Windows text APIs don't really do this).
466 * So we'd need to sample the background color at the right location and 471 * So we'd need to sample the background color at the right location and
467 * synthesize a good shadow color. */ 472 * synthesize a good shadow color. */
468 473
469 if (browser_view()->IsToolbarVisible()) 474 if (IsToolbarVisible())
470 PaintToolbarBackground(canvas); 475 PaintToolbarBackground(canvas);
471 if (!layout_->IsTitleBarCondensed()) 476 PaintClientEdge(canvas);
472 PaintRestoredClientEdge(canvas);
473 } 477 }
474 478
475 // BrowserNonClientFrameView: 479 // BrowserNonClientFrameView:
476 bool OpaqueBrowserFrameView::ShouldPaintAsThemed() const { 480 bool OpaqueBrowserFrameView::ShouldPaintAsThemed() const {
477 // Theme app and popup windows if |platform_observer_| wants it. 481 // Theme app and popup windows if |platform_observer_| wants it.
478 return browser_view()->IsBrowserTypeNormal() || 482 return browser_view()->IsBrowserTypeNormal() ||
479 platform_observer_->IsUsingSystemTheme(); 483 platform_observer_->IsUsingSystemTheme();
480 } 484 }
481 485
482 void OpaqueBrowserFrameView::UpdateNewAvatarButtonImpl() { 486 void OpaqueBrowserFrameView::UpdateNewAvatarButtonImpl() {
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
766 canvas->FillRect( 770 canvas->FillRect(
767 gfx::Rect(x + kClientEdgeThickness, 771 gfx::Rect(x + kClientEdgeThickness,
768 toolbar_bounds.bottom() - kClientEdgeThickness, 772 toolbar_bounds.bottom() - kClientEdgeThickness,
769 w - (2 * kClientEdgeThickness), 773 w - (2 * kClientEdgeThickness),
770 kClientEdgeThickness), 774 kClientEdgeThickness),
771 ThemeProperties::GetDefaultColor( 775 ThemeProperties::GetDefaultColor(
772 ThemeProperties::COLOR_TOOLBAR_SEPARATOR)); 776 ThemeProperties::COLOR_TOOLBAR_SEPARATOR));
773 } 777 }
774 } 778 }
775 779
776 void OpaqueBrowserFrameView::PaintRestoredClientEdge(gfx::Canvas* canvas) { 780 void OpaqueBrowserFrameView::PaintClientEdge(gfx::Canvas* canvas) {
777 ui::ThemeProvider* tp = GetThemeProvider(); 781 ui::ThemeProvider* tp = GetThemeProvider();
778 int client_area_top = frame()->client_view()->y(); 782 int client_area_top = frame()->client_view()->y();
779 int image_top = client_area_top; 783 int image_top = client_area_top;
780 784
781 gfx::Rect client_area_bounds = 785 gfx::Rect client_area_bounds =
782 layout_->CalculateClientAreaBounds(width(), height()); 786 layout_->CalculateClientAreaBounds(width(), height());
783 SkColor toolbar_color = tp->GetColor(ThemeProperties::COLOR_TOOLBAR); 787 SkColor toolbar_color = tp->GetColor(ThemeProperties::COLOR_TOOLBAR);
784 788
785 if (browser_view()->IsToolbarVisible()) { 789 if (IsToolbarVisible()) {
786 // The client edge images start below the toolbar. 790 // The client edge images start below the toolbar.
787 gfx::Rect toolbar_bounds(browser_view()->GetToolbarBounds()); 791 gfx::Rect toolbar_bounds(browser_view()->GetToolbarBounds());
788 client_area_top += toolbar_bounds.bottom(); 792 client_area_top += toolbar_bounds.bottom();
789 image_top = client_area_top; 793 image_top = client_area_top;
790 } else if (!browser_view()->IsTabStripVisible()) { 794 } else {
791 // The toolbar isn't going to draw a client edge for us, so draw one 795 // The toolbar isn't going to draw a top edge for us, so draw one ourselves.
792 // ourselves.
793 gfx::ImageSkia* top_left = tp->GetImageSkiaNamed(IDR_APP_TOP_LEFT); 796 gfx::ImageSkia* top_left = tp->GetImageSkiaNamed(IDR_APP_TOP_LEFT);
794 gfx::ImageSkia* top_center = tp->GetImageSkiaNamed(IDR_APP_TOP_CENTER); 797 gfx::ImageSkia* top_center = tp->GetImageSkiaNamed(IDR_APP_TOP_CENTER);
795 gfx::ImageSkia* top_right = tp->GetImageSkiaNamed(IDR_APP_TOP_RIGHT); 798 gfx::ImageSkia* top_right = tp->GetImageSkiaNamed(IDR_APP_TOP_RIGHT);
796 int top_edge_y = client_area_top - top_center->height(); 799 int top_edge_y = client_area_top - top_center->height();
797 int height = client_area_top - top_edge_y; 800 int height = client_area_top - top_edge_y;
798 801
799 canvas->DrawImageInt(*top_left, 0, 0, top_left->width(), height, 802 canvas->DrawImageInt(*top_left, 0, 0, top_left->width(), height,
800 client_area_bounds.x() - top_left->width(), top_edge_y, 803 client_area_bounds.x() - top_left->width(), top_edge_y,
801 top_left->width(), height, false); 804 top_left->width(), height, false);
802 canvas->TileImageInt(*top_center, 0, 0, client_area_bounds.x(), top_edge_y, 805 canvas->TileImageInt(*top_center, 0, 0, client_area_bounds.x(), top_edge_y,
803 client_area_bounds.width(), std::min(height, top_center->height())); 806 client_area_bounds.width(), std::min(height, top_center->height()));
804 canvas->DrawImageInt(*top_right, 0, 0, top_right->width(), height, 807 canvas->DrawImageInt(*top_right, 0, 0, top_right->width(), height,
805 client_area_bounds.right(), top_edge_y, 808 client_area_bounds.right(), top_edge_y,
806 top_right->width(), height, false); 809 top_right->width(), height, false);
807 810
808 // Draw the toolbar color across the top edge. 811 // Draw the toolbar color across the top edge.
809 canvas->FillRect(gfx::Rect(client_area_bounds.x() - kClientEdgeThickness, 812 canvas->FillRect(gfx::Rect(client_area_bounds.x() - kClientEdgeThickness,
810 client_area_top - kClientEdgeThickness, 813 client_area_top - kClientEdgeThickness,
811 client_area_bounds.width() + (2 * kClientEdgeThickness), 814 client_area_bounds.width() + (2 * kClientEdgeThickness),
812 kClientEdgeThickness), toolbar_color); 815 kClientEdgeThickness), toolbar_color);
813 } 816 }
814 817
818 // In maximized mode, the only edge to draw is the top one, so we're done.
819 if (layout_->IsTitleBarCondensed())
820 return;
821
815 int client_area_bottom = 822 int client_area_bottom =
816 std::max(client_area_top, height() - NonClientBorderThickness()); 823 std::max(client_area_top, height() - NonClientBorderThickness());
817 int image_height = client_area_bottom - image_top; 824 int image_height = client_area_bottom - image_top;
818 825
819 // Draw the client edge images. 826 // Draw the client edge images.
820 gfx::ImageSkia* right = tp->GetImageSkiaNamed(IDR_CONTENT_RIGHT_SIDE); 827 gfx::ImageSkia* right = tp->GetImageSkiaNamed(IDR_CONTENT_RIGHT_SIDE);
821 canvas->TileImageInt(*right, client_area_bounds.right(), image_top, 828 canvas->TileImageInt(*right, client_area_bounds.right(), image_top,
822 right->width(), image_height); 829 right->width(), image_height);
823 canvas->DrawImageInt( 830 canvas->DrawImageInt(
824 *tp->GetImageSkiaNamed(IDR_CONTENT_BOTTOM_RIGHT_CORNER), 831 *tp->GetImageSkiaNamed(IDR_CONTENT_BOTTOM_RIGHT_CORNER),
(...skipping 19 matching lines...) Expand all
844 client_area_bottom + kClientEdgeThickness - client_area_top), 851 client_area_bottom + kClientEdgeThickness - client_area_top),
845 toolbar_color); 852 toolbar_color);
846 canvas->FillRect(gfx::Rect(client_area_bounds.x(), client_area_bottom, 853 canvas->FillRect(gfx::Rect(client_area_bounds.x(), client_area_bottom,
847 client_area_bounds.width(), kClientEdgeThickness), 854 client_area_bounds.width(), kClientEdgeThickness),
848 toolbar_color); 855 toolbar_color);
849 canvas->FillRect(gfx::Rect(client_area_bounds.right(), client_area_top, 856 canvas->FillRect(gfx::Rect(client_area_bounds.right(), client_area_top,
850 kClientEdgeThickness, 857 kClientEdgeThickness,
851 client_area_bottom + kClientEdgeThickness - client_area_top), 858 client_area_bottom + kClientEdgeThickness - client_area_top),
852 toolbar_color); 859 toolbar_color);
853 } 860 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698