| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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/views/frame/glass_browser_frame_view.h" | 5 #include "chrome/browser/views/frame/glass_browser_frame_view.h" |
| 6 | 6 |
| 7 #include "chrome/browser/views/frame/browser_view.h" | 7 #include "chrome/browser/views/frame/browser_view.h" |
| 8 #include "chrome/browser/views/tabs/tab_strip.h" | 8 #include "chrome/browser/views/tabs/tab_strip.h" |
| 9 #include "chrome/common/gfx/chrome_canvas.h" | 9 #include "chrome/common/gfx/chrome_canvas.h" |
| 10 #include "chrome/common/resource_bundle.h" | 10 #include "chrome/common/resource_bundle.h" |
| (...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 /////////////////////////////////////////////////////////////////////////////// | 218 /////////////////////////////////////////////////////////////////////////////// |
| 219 // GlassBrowserFrameView, views::View overrides: | 219 // GlassBrowserFrameView, views::View overrides: |
| 220 | 220 |
| 221 void GlassBrowserFrameView::Paint(ChromeCanvas* canvas) { | 221 void GlassBrowserFrameView::Paint(ChromeCanvas* canvas) { |
| 222 if (!browser_view_->IsTabStripVisible()) | 222 if (!browser_view_->IsTabStripVisible()) |
| 223 return; // Nothing is visible, so don't bother to paint. | 223 return; // Nothing is visible, so don't bother to paint. |
| 224 | 224 |
| 225 PaintDistributorLogo(canvas); | 225 PaintDistributorLogo(canvas); |
| 226 PaintToolbarBackground(canvas); | 226 PaintToolbarBackground(canvas); |
| 227 PaintOTRAvatar(canvas); | 227 PaintOTRAvatar(canvas); |
| 228 PaintClientEdge(canvas); | 228 if (!frame_->IsMaximized()) |
| 229 PaintRestoredClientEdge(canvas); |
| 229 } | 230 } |
| 230 | 231 |
| 231 void GlassBrowserFrameView::Layout() { | 232 void GlassBrowserFrameView::Layout() { |
| 232 LayoutDistributorLogo(); | 233 LayoutDistributorLogo(); |
| 233 LayoutOTRAvatar(); | 234 LayoutOTRAvatar(); |
| 234 LayoutClientView(); | 235 LayoutClientView(); |
| 235 } | 236 } |
| 236 | 237 |
| 237 /////////////////////////////////////////////////////////////////////////////// | 238 /////////////////////////////////////////////////////////////////////////////// |
| 238 // GlassBrowserFrameView, private: | 239 // GlassBrowserFrameView, private: |
| 239 | 240 |
| 240 int GlassBrowserFrameView::FrameBorderThickness() const { | 241 int GlassBrowserFrameView::FrameBorderThickness() const { |
| 241 return GetSystemMetrics(SM_CXSIZEFRAME); | 242 return browser_view_->CanCurrentlyResize() ? |
| 243 GetSystemMetrics(SM_CXSIZEFRAME) : 0; |
| 242 } | 244 } |
| 243 | 245 |
| 244 int GlassBrowserFrameView::NonClientBorderThickness() const { | 246 int GlassBrowserFrameView::NonClientBorderThickness() const { |
| 245 return kNonClientBorderThickness; | 247 return browser_view_->CanCurrentlyResize() ? kNonClientBorderThickness : 0; |
| 246 } | 248 } |
| 247 | 249 |
| 248 int GlassBrowserFrameView::NonClientTopBorderHeight() const { | 250 int GlassBrowserFrameView::NonClientTopBorderHeight() const { |
| 249 return FrameBorderThickness() + | 251 if (browser_view_->IsFullscreen()) |
| 250 (frame_->IsMaximized() ? 0 : kNonClientRestoredExtraThickness); | 252 return 0; |
| 253 // We'd like to use FrameBorderThickness() here, but the maximized Aero glass |
| 254 // frame has a 0 frame border around most edges and a CXSIZEFRAME-thick border |
| 255 // at the top (see AeroGlassFrame::OnGetMinMaxInfo()). |
| 256 return GetSystemMetrics(SM_CXSIZEFRAME) + |
| 257 (browser_view_->IsMaximized() ? 0 : kNonClientRestoredExtraThickness); |
| 251 } | 258 } |
| 252 | 259 |
| 253 void GlassBrowserFrameView::PaintDistributorLogo(ChromeCanvas* canvas) { | 260 void GlassBrowserFrameView::PaintDistributorLogo(ChromeCanvas* canvas) { |
| 254 // The distributor logo is only painted when the frame is not maximized and | 261 // The distributor logo is only painted when the frame is not maximized and |
| 255 // when we actually have a logo. | 262 // when we actually have a logo. |
| 256 if (!frame_->IsMaximized() && distributor_logo_) { | 263 if (!frame_->IsMaximized() && distributor_logo_) { |
| 257 // NOTE: We don't mirror the logo placement here because the outer frame | 264 // NOTE: We don't mirror the logo placement here because the outer frame |
| 258 // itself isn't mirrored in RTL. This is a bug; if it is fixed, this should | 265 // itself isn't mirrored in RTL. This is a bug; if it is fixed, this should |
| 259 // be mirrored as in opaque_non_client_view.cc. | 266 // be mirrored as in opaque_non_client_view.cc. |
| 260 canvas->DrawBitmapInt(*distributor_logo_, logo_bounds_.x(), | 267 canvas->DrawBitmapInt(*distributor_logo_, logo_bounds_.x(), |
| (...skipping 27 matching lines...) Expand all Loading... |
| 288 return; | 295 return; |
| 289 | 296 |
| 290 SkBitmap otr_avatar_icon = browser_view_->GetOTRAvatarIcon(); | 297 SkBitmap otr_avatar_icon = browser_view_->GetOTRAvatarIcon(); |
| 291 canvas->DrawBitmapInt(otr_avatar_icon, 0, | 298 canvas->DrawBitmapInt(otr_avatar_icon, 0, |
| 292 (otr_avatar_icon.height() - otr_avatar_bounds_.height()) / 2, | 299 (otr_avatar_icon.height() - otr_avatar_bounds_.height()) / 2, |
| 293 otr_avatar_bounds_.width(), otr_avatar_bounds_.height(), | 300 otr_avatar_bounds_.width(), otr_avatar_bounds_.height(), |
| 294 MirroredLeftPointForRect(otr_avatar_bounds_), otr_avatar_bounds_.y(), | 301 MirroredLeftPointForRect(otr_avatar_bounds_), otr_avatar_bounds_.y(), |
| 295 otr_avatar_bounds_.width(), otr_avatar_bounds_.height(), false); | 302 otr_avatar_bounds_.width(), otr_avatar_bounds_.height(), false); |
| 296 } | 303 } |
| 297 | 304 |
| 298 void GlassBrowserFrameView::PaintClientEdge(ChromeCanvas* canvas) { | 305 void GlassBrowserFrameView::PaintRestoredClientEdge(ChromeCanvas* canvas) { |
| 299 // The client edges start below the toolbar upper corner images regardless | 306 // The client edges start below the toolbar upper corner images regardless |
| 300 // of how tall the toolbar itself is. | 307 // of how tall the toolbar itself is. |
| 301 int client_area_top = | 308 int client_area_top = |
| 302 frame_->client_view()->y() + browser_view_->GetToolbarBounds().y() + | 309 frame_->client_view()->y() + browser_view_->GetToolbarBounds().y() + |
| 303 resources_->GetPartBitmap(FRAME_CLIENT_EDGE_TOP_LEFT)->height(); | 310 resources_->GetPartBitmap(FRAME_CLIENT_EDGE_TOP_LEFT)->height(); |
| 304 | 311 |
| 305 gfx::Rect client_area_bounds = CalculateClientAreaBounds(width(), height()); | 312 gfx::Rect client_area_bounds = CalculateClientAreaBounds(width(), height()); |
| 306 int client_area_bottom = | 313 int client_area_bottom = |
| 307 std::max(client_area_top, height() - NonClientBorderThickness()); | 314 std::max(client_area_top, height() - NonClientBorderThickness()); |
| 308 int client_area_height = client_area_bottom - client_area_top; | 315 int client_area_height = client_area_bottom - client_area_top; |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 415 | 422 |
| 416 #if defined(GOOGLE_CHROME_BUILD) | 423 #if defined(GOOGLE_CHROME_BUILD) |
| 417 distributor_logo_ = ResourceBundle::GetSharedInstance(). | 424 distributor_logo_ = ResourceBundle::GetSharedInstance(). |
| 418 GetBitmapNamed(IDR_DISTRIBUTOR_LOGO); | 425 GetBitmapNamed(IDR_DISTRIBUTOR_LOGO); |
| 419 #endif | 426 #endif |
| 420 | 427 |
| 421 initialized = true; | 428 initialized = true; |
| 422 } | 429 } |
| 423 } | 430 } |
| 424 | 431 |
| OLD | NEW |