| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/chromeos/frame/normal_browser_frame_view.h" | 5 #include "chrome/browser/chromeos/frame/normal_browser_frame_view.h" |
| 6 | 6 |
| 7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "app/resource_bundle.h" | 8 #include "app/resource_bundle.h" |
| 9 #include "app/theme_provider.h" | 9 #include "app/theme_provider.h" |
| 10 #include "app/x11_util.h" | 10 #include "app/x11_util.h" |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 gfx::Rect NormalBrowserFrameView::GetBoundsForTabStrip( | 85 gfx::Rect NormalBrowserFrameView::GetBoundsForTabStrip( |
| 86 BaseTabStrip* tabstrip) const { | 86 BaseTabStrip* tabstrip) const { |
| 87 int border_thickness = FrameBorderThickness(); | 87 int border_thickness = FrameBorderThickness(); |
| 88 if (browser_view_->UseVerticalTabs()) { | 88 if (browser_view_->UseVerticalTabs()) { |
| 89 // BrowserViewLayout adjusts the height/width based on the status area and | 89 // BrowserViewLayout adjusts the height/width based on the status area and |
| 90 // otr icon. | 90 // otr icon. |
| 91 gfx::Size ps = tabstrip->GetPreferredSize(); | 91 gfx::Size ps = tabstrip->GetPreferredSize(); |
| 92 return gfx::Rect(border_thickness, NonClientTopBorderHeight(), | 92 return gfx::Rect(border_thickness, NonClientTopBorderHeight(), |
| 93 ps.width(), browser_view_->height()); | 93 ps.width(), browser_view_->height()); |
| 94 } | 94 } |
| 95 return gfx::Rect(border_thickness, NonClientTopBorderHeight(), | 95 return gfx::Rect(border_thickness, GetHorizontalTabStripVerticalOffset(false), |
| 96 std::max(0, width() - (2 * border_thickness)), | 96 std::max(0, width() - (2 * border_thickness)), |
| 97 tabstrip->GetPreferredHeight()); | 97 tabstrip->GetPreferredHeight()); |
| 98 } | 98 } |
| 99 | 99 |
| 100 int NormalBrowserFrameView::GetHorizontalTabStripVerticalOffset( |
| 101 bool restored) const { |
| 102 return NonClientTopBorderHeight(); |
| 103 } |
| 104 |
| 100 void NormalBrowserFrameView::UpdateThrobber(bool running) { | 105 void NormalBrowserFrameView::UpdateThrobber(bool running) { |
| 101 // No window icon. | 106 // No window icon. |
| 102 } | 107 } |
| 103 | 108 |
| 104 gfx::Size NormalBrowserFrameView::GetMinimumSize() { | 109 gfx::Size NormalBrowserFrameView::GetMinimumSize() { |
| 105 gfx::Size min_size(browser_view_->GetMinimumSize()); | 110 gfx::Size min_size(browser_view_->GetMinimumSize()); |
| 106 int border_thickness = FrameBorderThickness(); | 111 int border_thickness = FrameBorderThickness(); |
| 107 min_size.Enlarge(2 * border_thickness, | 112 min_size.Enlarge(2 * border_thickness, |
| 108 NonClientTopBorderHeight() + border_thickness); | 113 NonClientTopBorderHeight() + border_thickness); |
| 109 | 114 |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 return std::max(0, FrameBorderThickness() - | 255 return std::max(0, FrameBorderThickness() - |
| 251 (browser_view_->IsTabStripVisible() ? kTabstripTopShadowThickness : 0)); | 256 (browser_view_->IsTabStripVisible() ? kTabstripTopShadowThickness : 0)); |
| 252 } | 257 } |
| 253 | 258 |
| 254 void NormalBrowserFrameView::PaintMaximizedFrameBorder(gfx::Canvas* canvas) { | 259 void NormalBrowserFrameView::PaintMaximizedFrameBorder(gfx::Canvas* canvas) { |
| 255 ThemeProvider* tp = GetThemeProvider(); | 260 ThemeProvider* tp = GetThemeProvider(); |
| 256 views::Window* window = frame_->GetWindow(); | 261 views::Window* window = frame_->GetWindow(); |
| 257 | 262 |
| 258 // Window frame mode and color | 263 // Window frame mode and color |
| 259 SkBitmap* theme_frame; | 264 SkBitmap* theme_frame; |
| 260 int y = 0; | 265 // HACK: This is to properly align the frame background with the tab |
| 266 // background. This was added because when this code was copied from the |
| 267 // opaque frame code, that code didn't correctly handle maximized mode theme |
| 268 // alignment. That bug has since been fixed in a more general but more |
| 269 // complex way in the opaque frame. Since this file is eventually going to |
| 270 // die (see crbug.com/52674), I'm just leaving this here rather than replacing |
| 271 // it with the complex fix. |
| 272 int y = -kCustomFrameBackgroundVerticalOffset; |
| 261 // Never theme app and popup windows. | 273 // Never theme app and popup windows. |
| 262 if (!browser_view_->IsBrowserTypeNormal()) { | 274 if (!browser_view_->IsBrowserTypeNormal()) { |
| 263 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 275 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
| 264 theme_frame = rb.GetBitmapNamed(ShouldPaintAsActive() ? | 276 theme_frame = rb.GetBitmapNamed(ShouldPaintAsActive() ? |
| 265 IDR_FRAME : IDR_FRAME_INACTIVE); | 277 IDR_FRAME : IDR_FRAME_INACTIVE); |
| 278 y = 0; // These are never themed. |
| 266 } else if (!browser_view_->IsOffTheRecord()) { | 279 } else if (!browser_view_->IsOffTheRecord()) { |
| 267 theme_frame = tp->GetBitmapNamed(ShouldPaintAsActive() ? | 280 theme_frame = tp->GetBitmapNamed(ShouldPaintAsActive() ? |
| 268 IDR_THEME_FRAME : IDR_THEME_FRAME_INACTIVE); | 281 IDR_THEME_FRAME : IDR_THEME_FRAME_INACTIVE); |
| 269 // TODO(oshima): gtk based CHROMEOS is using non custom frame | |
| 270 // mode which does this adjustment. This should be removed | |
| 271 // once it's fully migrated to views. -1 is due to the layout | |
| 272 // difference between views and gtk and will be removed. | |
| 273 // See http://crbug.com/28580. | |
| 274 y = -kCustomFrameBackgroundVerticalOffset - 1; | |
| 275 } else { | 282 } else { |
| 276 theme_frame = tp->GetBitmapNamed(ShouldPaintAsActive() ? | 283 theme_frame = tp->GetBitmapNamed(ShouldPaintAsActive() ? |
| 277 IDR_THEME_FRAME_INCOGNITO: IDR_THEME_FRAME_INCOGNITO_INACTIVE); | 284 IDR_THEME_FRAME_INCOGNITO: IDR_THEME_FRAME_INCOGNITO_INACTIVE); |
| 278 y = -kCustomFrameBackgroundVerticalOffset - 1; | |
| 279 } | 285 } |
| 280 // Draw the theme frame. | 286 // Draw the theme frame. It must be aligned with the tabstrip as if we were |
| 287 // in restored mode. Note that the top of the tabstrip is |
| 288 // kTabstripTopShadowThickness px off the top of the screen. |
| 281 canvas->TileImageInt(*theme_frame, 0, y, width(), theme_frame->height()); | 289 canvas->TileImageInt(*theme_frame, 0, y, width(), theme_frame->height()); |
| 282 | 290 |
| 283 // Draw the theme frame overlay | 291 // Draw the theme frame overlay |
| 284 if (tp->HasCustomImage(IDR_THEME_FRAME_OVERLAY) && | 292 if (tp->HasCustomImage(IDR_THEME_FRAME_OVERLAY) && |
| 285 browser_view_->IsBrowserTypeNormal()) { | 293 browser_view_->IsBrowserTypeNormal()) { |
| 286 SkBitmap* theme_overlay = tp->GetBitmapNamed(ShouldPaintAsActive() ? | 294 SkBitmap* theme_overlay = tp->GetBitmapNamed(ShouldPaintAsActive() ? |
| 287 IDR_THEME_FRAME_OVERLAY : IDR_THEME_FRAME_OVERLAY_INACTIVE); | 295 IDR_THEME_FRAME_OVERLAY : IDR_THEME_FRAME_OVERLAY_INACTIVE); |
| 288 canvas->DrawBitmapInt(*theme_overlay, 0, 0); | 296 canvas->DrawBitmapInt(*theme_overlay, 0, y); |
| 289 } | 297 } |
| 290 | 298 |
| 291 if (!browser_view_->IsToolbarVisible()) { | 299 if (!browser_view_->IsToolbarVisible()) { |
| 292 // There's no toolbar to edge the frame border, so we need to draw a bottom | 300 // There's no toolbar to edge the frame border, so we need to draw a bottom |
| 293 // edge. The graphic we use for this has a built in client edge, so we clip | 301 // edge. The graphic we use for this has a built in client edge, so we clip |
| 294 // it off the bottom. | 302 // it off the bottom. |
| 295 SkBitmap* top_center = | 303 SkBitmap* top_center = |
| 296 tp->GetBitmapNamed(IDR_APP_TOP_CENTER); | 304 tp->GetBitmapNamed(IDR_APP_TOP_CENTER); |
| 297 int edge_height = top_center->height() - kClientEdgeThickness; | 305 int edge_height = top_center->height() - kClientEdgeThickness; |
| 298 canvas->TileImageInt(*top_center, 0, | 306 canvas->TileImageInt(*top_center, 0, |
| (...skipping 23 matching lines...) Expand all Loading... |
| 322 int bottom_y = toolbar_bounds.y() + split_point; | 330 int bottom_y = toolbar_bounds.y() + split_point; |
| 323 SkBitmap* toolbar_left = | 331 SkBitmap* toolbar_left = |
| 324 tp->GetBitmapNamed(IDR_CONTENT_TOP_LEFT_CORNER); | 332 tp->GetBitmapNamed(IDR_CONTENT_TOP_LEFT_CORNER); |
| 325 int bottom_edge_height = | 333 int bottom_edge_height = |
| 326 std::min(toolbar_left->height(), toolbar_bounds.height()) - split_point; | 334 std::min(toolbar_left->height(), toolbar_bounds.height()) - split_point; |
| 327 | 335 |
| 328 SkColor theme_toolbar_color = | 336 SkColor theme_toolbar_color = |
| 329 tp->GetColor(BrowserThemeProvider::COLOR_TOOLBAR); | 337 tp->GetColor(BrowserThemeProvider::COLOR_TOOLBAR); |
| 330 canvas->FillRectInt(theme_toolbar_color, toolbar_bounds.x(), bottom_y, | 338 canvas->FillRectInt(theme_toolbar_color, toolbar_bounds.x(), bottom_y, |
| 331 toolbar_bounds.width(), bottom_edge_height); | 339 toolbar_bounds.width(), bottom_edge_height); |
| 332 toolbar_bounds.Inset(-kClientEdgeThickness, 0); | |
| 333 | 340 |
| 334 int strip_height = browser_view_->GetTabStripHeight(); | 341 int strip_height = browser_view_->GetTabStripHeight(); |
| 335 SkBitmap* theme_toolbar = tp->GetBitmapNamed(IDR_THEME_TOOLBAR); | 342 SkBitmap* theme_toolbar = tp->GetBitmapNamed(IDR_THEME_TOOLBAR); |
| 336 | 343 |
| 337 canvas->TileImageInt(*theme_toolbar, toolbar_bounds.x(), | 344 canvas->TileImageInt(*theme_toolbar, toolbar_bounds.x(), |
| 338 strip_height - kFrameShadowThickness, toolbar_bounds.x(), | 345 strip_height - kFrameShadowThickness, toolbar_bounds.x(), bottom_y, |
| 339 bottom_y, toolbar_bounds.width(), theme_toolbar->height()); | 346 toolbar_bounds.width(), theme_toolbar->height()); |
| 340 | 347 |
| 341 canvas->DrawBitmapInt(*toolbar_left, 0, 0, toolbar_left->width(), split_point, | 348 canvas->DrawBitmapInt(*toolbar_left, 0, 0, toolbar_left->width(), split_point, |
| 342 toolbar_bounds.x() - toolbar_left->width(), toolbar_bounds.y(), | 349 toolbar_bounds.x() - toolbar_left->width(), toolbar_bounds.y(), |
| 343 toolbar_left->width(), split_point, false); | 350 toolbar_left->width(), split_point, false); |
| 344 canvas->DrawBitmapInt(*toolbar_left, 0, | 351 canvas->DrawBitmapInt(*toolbar_left, 0, |
| 345 toolbar_left->height() - bottom_edge_height, toolbar_left->width(), | 352 toolbar_left->height() - bottom_edge_height, toolbar_left->width(), |
| 346 bottom_edge_height, toolbar_bounds.x() - toolbar_left->width(), bottom_y, | 353 bottom_edge_height, toolbar_bounds.x() - toolbar_left->width(), bottom_y, |
| 347 toolbar_left->width(), bottom_edge_height, false); | 354 toolbar_left->width(), bottom_edge_height, false); |
| 348 | 355 |
| 349 SkBitmap* toolbar_center = | 356 SkBitmap* toolbar_center = |
| (...skipping 10 matching lines...) Expand all Loading... |
| 360 bottom_edge_height, toolbar_bounds.right(), bottom_y, | 367 bottom_edge_height, toolbar_bounds.right(), bottom_y, |
| 361 toolbar_right->width(), bottom_edge_height, false); | 368 toolbar_right->width(), bottom_edge_height, false); |
| 362 | 369 |
| 363 // Draw the content/toolbar separator. | 370 // Draw the content/toolbar separator. |
| 364 canvas->FillRectInt(ResourceBundle::toolbar_separator_color, | 371 canvas->FillRectInt(ResourceBundle::toolbar_separator_color, |
| 365 toolbar_bounds.x(), toolbar_bounds.bottom() - kClientEdgeThickness, | 372 toolbar_bounds.x(), toolbar_bounds.bottom() - kClientEdgeThickness, |
| 366 toolbar_bounds.width(), kClientEdgeThickness); | 373 toolbar_bounds.width(), kClientEdgeThickness); |
| 367 } | 374 } |
| 368 | 375 |
| 369 } // namespace chromeos | 376 } // namespace chromeos |
| OLD | NEW |