diff options
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/views/frame/aero_glass_non_client_view.cc | 14 | ||||
-rw-r--r-- | chrome/browser/views/frame/opaque_non_client_view.cc | 13 | ||||
-rw-r--r-- | chrome/browser/vista_frame.cc | 55 | ||||
-rw-r--r-- | chrome/browser/xp_frame.cc | 37 |
4 files changed, 72 insertions, 47 deletions
diff --git a/chrome/browser/views/frame/aero_glass_non_client_view.cc b/chrome/browser/views/frame/aero_glass_non_client_view.cc index 0e05ab9..d5d8472 100644 --- a/chrome/browser/views/frame/aero_glass_non_client_view.cc +++ b/chrome/browser/views/frame/aero_glass_non_client_view.cc @@ -248,8 +248,10 @@ int AeroGlassNonClientView::CalculateNonClientTopHeight() const { } void AeroGlassNonClientView::PaintDistributorLogo(ChromeCanvas* canvas) { - // The distributor logo is only painted when the frame is not maximized. - if (!frame_->IsMaximized() && !frame_->IsMinimized()) { + // The distributor logo is only painted when the frame is not maximized and + // when we actually have a logo. + if (!frame_->IsMaximized() && !frame_->IsMinimized() && + !distributor_logo_.empty()) { canvas->DrawBitmapInt(distributor_logo_, logo_bounds_.x(), logo_bounds_.y()); } @@ -319,6 +321,9 @@ void AeroGlassNonClientView::PaintClientEdge(ChromeCanvas* canvas) { } void AeroGlassNonClientView::LayoutDistributorLogo() { + if (distributor_logo_.empty()) + return; + int logo_w = distributor_logo_.width(); int logo_h = distributor_logo_.height(); @@ -342,7 +347,10 @@ void AeroGlassNonClientView::InitClass() { if (!initialized) { resources_ = new AeroGlassWindowResources; ResourceBundle& rb = ResourceBundle::GetSharedInstance(); - distributor_logo_ = *rb.GetBitmapNamed(IDR_DISTRIBUTOR_LOGO); + SkBitmap* image = rb.GetBitmapNamed(IDR_DISTRIBUTOR_LOGO); + if (!image->isNull()) + distributor_logo_ = *image; + initialized = true; } } diff --git a/chrome/browser/views/frame/opaque_non_client_view.cc b/chrome/browser/views/frame/opaque_non_client_view.cc index 74ee8b1..116b9cb 100644 --- a/chrome/browser/views/frame/opaque_non_client_view.cc +++ b/chrome/browser/views/frame/opaque_non_client_view.cc @@ -812,8 +812,10 @@ void OpaqueNonClientView::PaintOTRAvatar(ChromeCanvas* canvas) { } void OpaqueNonClientView::PaintDistributorLogo(ChromeCanvas* canvas) { - // The distributor logo is only painted when the frame is not maximized. - if (!frame_->IsMaximized() && !frame_->IsMinimized()) { + // The distributor logo is only painted when the frame is not maximized and + // when we actually have a logo. + if (!frame_->IsMaximized() && !frame_->IsMinimized() && + !distributor_logo_.empty()) { canvas->DrawBitmapInt(distributor_logo_, logo_bounds_.x(), logo_bounds_.y()); } @@ -1007,6 +1009,9 @@ void OpaqueNonClientView::LayoutOTRAvatar() { } void OpaqueNonClientView::LayoutDistributorLogo() { + if (distributor_logo_.empty()) + return; + int logo_w = distributor_logo_.width(); int logo_h = distributor_logo_.height(); @@ -1063,7 +1068,9 @@ void OpaqueNonClientView::InitClass() { inactive_resources_ = new InactiveWindowResources; ResourceBundle& rb = ResourceBundle::GetSharedInstance(); - distributor_logo_ = *rb.GetBitmapNamed(IDR_DISTRIBUTOR_LOGO_LIGHT); + SkBitmap* image = rb.GetBitmapNamed(IDR_DISTRIBUTOR_LOGO_LIGHT); + if (!image->isNull()) + distributor_logo_ = *image; initialized = true; } diff --git a/chrome/browser/vista_frame.cc b/chrome/browser/vista_frame.cc index bdd3dbbd..18e3340 100644 --- a/chrome/browser/vista_frame.cc +++ b/chrome/browser/vista_frame.cc @@ -249,28 +249,30 @@ void VistaFrame::Layout() { // If we are maxmized, the tab strip will be in line with the window // controls, so we need to make sure they don't overlap. int zoomed_offset = 0; - if(IsZoomed()) { - zoomed_offset = std::max(min_offset, kWindowControlsMinOffset); + if (distributor_logo_) { + if(IsZoomed()) { + zoomed_offset = std::max(min_offset, kWindowControlsMinOffset); - // Hide the distributor logo if we're zoomed. - distributor_logo_->SetVisible(false); - } else { - CSize distributor_logo_size; - distributor_logo_->GetPreferredSize(&distributor_logo_size); - - int logo_x; - // Because of Bug 1128173, our Window controls aren't actually flipped - // on Vista, yet all our math and layout presumes that they are. - if (frame_view_->UILayoutIsRightToLeft()) - logo_x = width - distributor_logo_size.cx; - else - logo_x = width - min_offset - distributor_logo_size.cx; - - distributor_logo_->SetVisible(true); - distributor_logo_->SetBounds(logo_x, - kDistributorLogoVerticalOffset, - distributor_logo_size.cx, - distributor_logo_size.cy); + // Hide the distributor logo if we're zoomed. + distributor_logo_->SetVisible(false); + } else { + CSize distributor_logo_size; + distributor_logo_->GetPreferredSize(&distributor_logo_size); + + int logo_x; + // Because of Bug 1128173, our Window controls aren't actually flipped + // on Vista, yet all our math and layout presumes that they are. + if (frame_view_->UILayoutIsRightToLeft()) + logo_x = width - distributor_logo_size.cx; + else + logo_x = width - min_offset - distributor_logo_size.cx; + + distributor_logo_->SetVisible(true); + distributor_logo_->SetBounds(logo_x, + kDistributorLogoVerticalOffset, + distributor_logo_size.cx, + distributor_logo_size.cy); + } } gfx::Rect tabstrip_bounds(tabstrip_x, @@ -448,10 +450,13 @@ void VistaFrame::Init() { frame_view_->AddChildView(off_the_record_image_); } - distributor_logo_ = new ChromeViews::ImageView(); - frame_view_->AddViewToDropList(distributor_logo_); - distributor_logo_->SetImage(rb.GetBitmapNamed(IDR_DISTRIBUTOR_LOGO)); - frame_view_->AddChildView(distributor_logo_); + SkBitmap* image = rb.GetBitmapNamed(IDR_DISTRIBUTOR_LOGO); + if (!image->isNull()) { + distributor_logo_ = new ChromeViews::ImageView(); + frame_view_->AddViewToDropList(distributor_logo_); + distributor_logo_->SetImage(image); + frame_view_->AddChildView(distributor_logo_); + } tab_contents_container_ = new TabContentsContainerView(); frame_view_->AddChildView(tab_contents_container_); diff --git a/chrome/browser/xp_frame.cc b/chrome/browser/xp_frame.cc index bb2aefe..666d94b 100644 --- a/chrome/browser/xp_frame.cc +++ b/chrome/browser/xp_frame.cc @@ -476,10 +476,13 @@ void XPFrame::Init() { frame_view_->AddViewToDropList(off_the_record_image_); } - distributor_logo_ = new ChromeViews::ImageView(); - frame_view_->AddViewToDropList(distributor_logo_); - distributor_logo_->SetImage(rb.GetBitmapNamed(IDR_DISTRIBUTOR_LOGO_LIGHT)); - frame_view_->AddChildView(distributor_logo_); + SkBitmap* image = rb.GetBitmapNamed(IDR_DISTRIBUTOR_LOGO_LIGHT); + if (!image->isNull()) { + distributor_logo_ = new ChromeViews::ImageView(); + frame_view_->AddViewToDropList(distributor_logo_); + distributor_logo_->SetImage(image); + frame_view_->AddChildView(distributor_logo_); + } min_button_ = new ChromeViews::Button(); min_button_->SetListener(this, MINIATURIZE_TAG); @@ -717,18 +720,20 @@ void XPFrame::Layout() { } } - if (IsZoomed()) { - distributor_logo_->SetVisible(false); - } else { - CSize distributor_logo_size; - distributor_logo_->GetPreferredSize(&distributor_logo_size); - distributor_logo_->SetVisible(true); - distributor_logo_->SetBounds(min_button_->GetX() - - distributor_logo_size.cx - - kDistributorLogoHorizontalOffset, - kDistributorLogoVerticalOffset, - distributor_logo_size.cx, - distributor_logo_size.cy); + if (distributor_logo_) { + if (IsZoomed()) { + distributor_logo_->SetVisible(false); + } else { + CSize distributor_logo_size; + distributor_logo_->GetPreferredSize(&distributor_logo_size); + distributor_logo_->SetVisible(true); + distributor_logo_->SetBounds(min_button_->GetX() - + distributor_logo_size.cx - + kDistributorLogoHorizontalOffset, + kDistributorLogoVerticalOffset, + distributor_logo_size.cx, + distributor_logo_size.cy); + } } tabstrip_->SetBounds(tab_strip_x, top_margin - 1, |