Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "ash/wm/header_painter.h" | 5 #include "ash/wm/header_painter.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "ash/wm/caption_buttons/frame_caption_button_container_view.h" | 9 #include "ash/wm/caption_buttons/frame_caption_button_container_view.h" |
| 10 #include "base/logging.h" // DCHECK | 10 #include "base/logging.h" // DCHECK |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 36 // Space between the title text and the caption buttons. | 36 // Space between the title text and the caption buttons. |
| 37 const int kTitleLogoSpacing = 5; | 37 const int kTitleLogoSpacing = 5; |
| 38 // Space between window icon and title text. | 38 // Space between window icon and title text. |
| 39 const int kTitleIconOffsetX = 5; | 39 const int kTitleIconOffsetX = 5; |
| 40 // Space between window edge and title text, when there is no icon. | 40 // Space between window edge and title text, when there is no icon. |
| 41 const int kTitleNoIconOffsetX = 8; | 41 const int kTitleNoIconOffsetX = 8; |
| 42 // Color for the non-maximized window title text. | 42 // Color for the non-maximized window title text. |
| 43 const SkColor kNonMaximizedWindowTitleTextColor = SkColorSetRGB(40, 40, 40); | 43 const SkColor kNonMaximizedWindowTitleTextColor = SkColorSetRGB(40, 40, 40); |
| 44 // Color for the maximized window title text. | 44 // Color for the maximized window title text. |
| 45 const SkColor kMaximizedWindowTitleTextColor = SK_ColorWHITE; | 45 const SkColor kMaximizedWindowTitleTextColor = SK_ColorWHITE; |
| 46 // Size of header/content separator line below the header image. | 46 // Size of header/content separator line below the header image for non-browser |
| 47 // windows. | |
| 47 const int kHeaderContentSeparatorSize = 1; | 48 const int kHeaderContentSeparatorSize = 1; |
| 48 // Color of header bottom edge line. | 49 // Color of the active window header/content separator line for non-browser |
| 49 const SkColor kHeaderContentSeparatorColor = SkColorSetRGB(128, 128, 128); | 50 // windows. |
| 51 const SkColor kHeaderContentSeparatorColor = SkColorSetRGB(180, 180, 182); | |
| 52 // Color of the inactive window header/content separator line for non-browser | |
| 53 // windows. | |
| 54 const SkColor kHeaderContentSeparatorInactiveColor = | |
| 55 SkColorSetRGB(150, 150, 152); | |
| 50 // In the pre-Ash era the web content area had a frame along the left edge, so | 56 // In the pre-Ash era the web content area had a frame along the left edge, so |
| 51 // user-generated theme images for the new tab page assume they are shifted | 57 // user-generated theme images for the new tab page assume they are shifted |
| 52 // right relative to the header. Now that we have removed the left edge frame | 58 // right relative to the header. Now that we have removed the left edge frame |
| 53 // we need to copy the theme image for the window header from a few pixels | 59 // we need to copy the theme image for the window header from a few pixels |
| 54 // inset to preserve alignment with the NTP image, or else we'll break a bunch | 60 // inset to preserve alignment with the NTP image, or else we'll break a bunch |
| 55 // of existing themes. We do something similar on OS X for the same reason. | 61 // of existing themes. We do something similar on OS X for the same reason. |
| 56 const int kThemeFrameImageInsetX = 5; | 62 const int kThemeFrameImageInsetX = 5; |
| 57 // Duration of crossfade animation for activating and deactivating frame. | 63 // Duration of crossfade animation for activating and deactivating frame. |
| 58 const int kActivationCrossfadeDurationMs = 200; | 64 const int kActivationCrossfadeDurationMs = 200; |
| 59 | 65 |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 132 | 138 |
| 133 /////////////////////////////////////////////////////////////////////////////// | 139 /////////////////////////////////////////////////////////////////////////////// |
| 134 // HeaderPainter, public: | 140 // HeaderPainter, public: |
| 135 | 141 |
| 136 HeaderPainter::HeaderPainter() | 142 HeaderPainter::HeaderPainter() |
| 137 : frame_(NULL), | 143 : frame_(NULL), |
| 138 header_view_(NULL), | 144 header_view_(NULL), |
| 139 window_icon_(NULL), | 145 window_icon_(NULL), |
| 140 caption_button_container_(NULL), | 146 caption_button_container_(NULL), |
| 141 header_height_(0), | 147 header_height_(0), |
| 142 top_left_corner_(NULL), | |
| 143 top_edge_(NULL), | |
| 144 top_right_corner_(NULL), | |
| 145 header_left_edge_(NULL), | |
| 146 header_right_edge_(NULL), | |
| 147 previous_theme_frame_id_(0), | 148 previous_theme_frame_id_(0), |
| 148 previous_theme_frame_overlay_id_(0), | 149 previous_theme_frame_overlay_id_(0), |
| 149 crossfade_theme_frame_id_(0), | 150 crossfade_theme_frame_id_(0), |
| 150 crossfade_theme_frame_overlay_id_(0) {} | 151 crossfade_theme_frame_overlay_id_(0) {} |
| 151 | 152 |
| 152 HeaderPainter::~HeaderPainter() { | 153 HeaderPainter::~HeaderPainter() { |
| 153 } | 154 } |
| 154 | 155 |
| 155 void HeaderPainter::Init( | 156 void HeaderPainter::Init( |
| 156 Style style, | 157 Style style, |
| 157 views::Widget* frame, | 158 views::Widget* frame, |
| 158 views::View* header_view, | 159 views::View* header_view, |
| 159 views::View* window_icon, | 160 views::View* window_icon, |
| 160 FrameCaptionButtonContainerView* caption_button_container) { | 161 FrameCaptionButtonContainerView* caption_button_container) { |
| 161 DCHECK(frame); | 162 DCHECK(frame); |
| 162 DCHECK(header_view); | 163 DCHECK(header_view); |
| 163 // window_icon may be NULL. | 164 // window_icon may be NULL. |
| 164 DCHECK(caption_button_container); | 165 DCHECK(caption_button_container); |
| 165 style_ = style; | 166 style_ = style; |
| 166 frame_ = frame; | 167 frame_ = frame; |
| 167 header_view_ = header_view; | 168 header_view_ = header_view; |
| 168 window_icon_ = window_icon; | 169 window_icon_ = window_icon; |
| 169 caption_button_container_ = caption_button_container; | 170 caption_button_container_ = caption_button_container; |
| 170 | |
| 171 // Window frame image parts. | |
| 172 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); | |
| 173 top_left_corner_ = | |
| 174 rb.GetImageNamed(IDR_AURA_WINDOW_HEADER_SHADE_TOP_LEFT).ToImageSkia(); | |
| 175 top_edge_ = | |
| 176 rb.GetImageNamed(IDR_AURA_WINDOW_HEADER_SHADE_TOP).ToImageSkia(); | |
| 177 top_right_corner_ = | |
| 178 rb.GetImageNamed(IDR_AURA_WINDOW_HEADER_SHADE_TOP_RIGHT).ToImageSkia(); | |
| 179 header_left_edge_ = | |
| 180 rb.GetImageNamed(IDR_AURA_WINDOW_HEADER_SHADE_LEFT).ToImageSkia(); | |
| 181 header_right_edge_ = | |
| 182 rb.GetImageNamed(IDR_AURA_WINDOW_HEADER_SHADE_RIGHT).ToImageSkia(); | |
| 183 } | 171 } |
| 184 | 172 |
| 185 // static | 173 // static |
| 186 gfx::Rect HeaderPainter::GetBoundsForClientView( | 174 gfx::Rect HeaderPainter::GetBoundsForClientView( |
| 187 int header_height, | 175 int header_height, |
| 188 const gfx::Rect& window_bounds) { | 176 const gfx::Rect& window_bounds) { |
| 189 gfx::Rect client_bounds(window_bounds); | 177 gfx::Rect client_bounds(window_bounds); |
| 190 client_bounds.Inset(0, header_height, 0, 0); | 178 client_bounds.Inset(0, header_height, 0, 0); |
| 191 return client_bounds; | 179 return client_bounds; |
| 192 } | 180 } |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 229 | 217 |
| 230 int HeaderPainter::GetRightInset() const { | 218 int HeaderPainter::GetRightInset() const { |
| 231 return caption_button_container_->GetPreferredSize().width(); | 219 return caption_button_container_->GetPreferredSize().width(); |
| 232 } | 220 } |
| 233 | 221 |
| 234 int HeaderPainter::GetThemeBackgroundXInset() const { | 222 int HeaderPainter::GetThemeBackgroundXInset() const { |
| 235 return kThemeFrameImageInsetX; | 223 return kThemeFrameImageInsetX; |
| 236 } | 224 } |
| 237 | 225 |
| 238 void HeaderPainter::PaintHeader(gfx::Canvas* canvas, | 226 void HeaderPainter::PaintHeader(gfx::Canvas* canvas, |
| 227 Mode mode, | |
| 239 int theme_frame_id, | 228 int theme_frame_id, |
| 240 int theme_frame_overlay_id) { | 229 int theme_frame_overlay_id) { |
| 241 bool initial_paint = (previous_theme_frame_id_ == 0); | 230 bool initial_paint = (previous_theme_frame_id_ == 0); |
| 242 if (!initial_paint && | 231 if (!initial_paint && |
| 243 (previous_theme_frame_id_ != theme_frame_id || | 232 (previous_theme_frame_id_ != theme_frame_id || |
| 244 previous_theme_frame_overlay_id_ != theme_frame_overlay_id)) { | 233 previous_theme_frame_overlay_id_ != theme_frame_overlay_id)) { |
| 245 aura::Window* parent = frame_->GetNativeWindow()->parent(); | 234 aura::Window* parent = frame_->GetNativeWindow()->parent(); |
| 246 // Don't animate the header if the parent (a workspace) is already | 235 // Don't animate the header if the parent (a workspace) is already |
| 247 // animating. Doing so results in continually painting during the animation | 236 // animating. Doing so results in continually painting during the animation |
| 248 // and gives a slower frame rate. | 237 // and gives a slower frame rate. |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 314 theme_frame, | 303 theme_frame, |
| 315 theme_frame_overlay, | 304 theme_frame_overlay, |
| 316 paint, | 305 paint, |
| 317 GetHeaderLocalBounds(), | 306 GetHeaderLocalBounds(), |
| 318 corner_radius, | 307 corner_radius, |
| 319 GetThemeBackgroundXInset()); | 308 GetThemeBackgroundXInset()); |
| 320 | 309 |
| 321 previous_theme_frame_id_ = theme_frame_id; | 310 previous_theme_frame_id_ = theme_frame_id; |
| 322 previous_theme_frame_overlay_id_ = theme_frame_overlay_id; | 311 previous_theme_frame_overlay_id_ = theme_frame_overlay_id; |
| 323 | 312 |
| 324 // We don't need the extra lightness in the edges when the window is maximized | 313 PaintBorder(canvas, mode); |
| 325 // or fullscreen. | |
| 326 if (frame_->IsMaximized() || frame_->IsFullscreen()) | |
| 327 return; | |
| 328 | |
| 329 // Draw the top corners and edge. | |
| 330 int top_left_width = top_left_corner_->width(); | |
| 331 int top_left_height = top_left_corner_->height(); | |
| 332 canvas->DrawImageInt(*top_left_corner_, | |
| 333 0, 0, top_left_width, top_left_height, | |
| 334 0, 0, top_left_width, top_left_height, | |
| 335 false); | |
| 336 canvas->TileImageInt(*top_edge_, | |
| 337 top_left_width, | |
| 338 0, | |
| 339 header_view_->width() - top_left_width - top_right_corner_->width(), | |
| 340 top_edge_->height()); | |
| 341 int top_right_height = top_right_corner_->height(); | |
| 342 canvas->DrawImageInt(*top_right_corner_, | |
| 343 0, 0, | |
| 344 top_right_corner_->width(), top_right_height, | |
| 345 header_view_->width() - top_right_corner_->width(), 0, | |
| 346 top_right_corner_->width(), top_right_height, | |
| 347 false); | |
| 348 | |
| 349 // Header left edge. | |
| 350 int header_left_height = theme_frame->height() - top_left_height; | |
| 351 canvas->TileImageInt(*header_left_edge_, | |
| 352 0, top_left_height, | |
| 353 header_left_edge_->width(), header_left_height); | |
| 354 | |
| 355 // Header right edge. | |
| 356 int header_right_height = theme_frame->height() - top_right_height; | |
| 357 canvas->TileImageInt(*header_right_edge_, | |
| 358 header_view_->width() - header_right_edge_->width(), | |
| 359 top_right_height, | |
| 360 header_right_edge_->width(), | |
| 361 header_right_height); | |
| 362 | |
| 363 // We don't draw edges around the content area. Web content goes flush | |
| 364 // to the edge of the window. | |
| 365 } | 314 } |
| 366 | 315 |
| 367 void HeaderPainter::PaintHeaderContentSeparator(gfx::Canvas* canvas) { | 316 void HeaderPainter::PaintHeaderContentSeparator(gfx::Canvas* canvas, |
| 317 Mode mode) { | |
| 318 DCHECK_EQ(style_, STYLE_OTHER); | |
| 319 SkColor color = (mode == MODE_ACTIVE) ? | |
| 320 kHeaderContentSeparatorColor : | |
| 321 kHeaderContentSeparatorInactiveColor; | |
| 368 canvas->FillRect(gfx::Rect(0, | 322 canvas->FillRect(gfx::Rect(0, |
| 369 header_height_ - kHeaderContentSeparatorSize, | 323 header_height_ - kHeaderContentSeparatorSize, |
| 370 header_view_->width(), | 324 header_view_->width(), |
| 371 kHeaderContentSeparatorSize), | 325 kHeaderContentSeparatorSize), |
| 372 kHeaderContentSeparatorColor); | 326 color); |
| 373 } | 327 } |
| 374 | 328 |
| 375 int HeaderPainter::HeaderContentSeparatorSize() const { | 329 int HeaderPainter::HeaderContentSeparatorSize() const { |
| 376 return kHeaderContentSeparatorSize; | 330 return kHeaderContentSeparatorSize; |
| 377 } | 331 } |
| 378 | 332 |
| 379 void HeaderPainter::PaintTitleBar(gfx::Canvas* canvas, | 333 void HeaderPainter::PaintTitleBar(gfx::Canvas* canvas, |
| 380 const gfx::FontList& title_font_list) { | 334 const gfx::FontList& title_font_list) { |
| 381 // The window icon is painted by its own views::View. | 335 // The window icon is painted by its own views::View. |
| 382 views::WidgetDelegate* delegate = frame_->widget_delegate(); | 336 views::WidgetDelegate* delegate = frame_->widget_delegate(); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 442 /////////////////////////////////////////////////////////////////////////////// | 396 /////////////////////////////////////////////////////////////////////////////// |
| 443 // gfx::AnimationDelegate overrides: | 397 // gfx::AnimationDelegate overrides: |
| 444 | 398 |
| 445 void HeaderPainter::AnimationProgressed(const gfx::Animation* animation) { | 399 void HeaderPainter::AnimationProgressed(const gfx::Animation* animation) { |
| 446 header_view_->SchedulePaintInRect(GetHeaderLocalBounds()); | 400 header_view_->SchedulePaintInRect(GetHeaderLocalBounds()); |
| 447 } | 401 } |
| 448 | 402 |
| 449 /////////////////////////////////////////////////////////////////////////////// | 403 /////////////////////////////////////////////////////////////////////////////// |
| 450 // HeaderPainter, private: | 404 // HeaderPainter, private: |
| 451 | 405 |
| 406 void HeaderPainter::PaintBorder(gfx::Canvas* canvas, Mode mode) { | |
| 407 if (frame_->IsMaximized() || | |
| 408 frame_->IsFullscreen() || | |
| 409 (style_ == STYLE_OTHER && mode == MODE_ACTIVE)) { | |
| 410 return; | |
| 411 } | |
| 412 | |
| 413 gfx::ImageSkia top_left_corner; | |
| 414 gfx::ImageSkia top_right_corner; | |
| 415 gfx::ImageSkia top_edge; | |
| 416 gfx::ImageSkia left_edge; | |
| 417 gfx::ImageSkia right_edge; | |
| 418 gfx::ImageSkia bottom_edge; | |
| 419 | |
| 420 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); | |
| 421 if (style_ == STYLE_BROWSER) { | |
| 422 top_left_corner = *rb.GetImageSkiaNamed( | |
| 423 IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_TOP_LEFT); | |
| 424 top_right_corner = *rb.GetImageSkiaNamed( | |
| 425 IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_TOP_RIGHT); | |
| 426 top_edge = *rb.GetImageSkiaNamed(IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_TOP); | |
| 427 left_edge = *rb.GetImageSkiaNamed( | |
| 428 IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_LEFT); | |
| 429 right_edge = *rb.GetImageSkiaNamed( | |
| 430 IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_RIGHT); | |
| 431 } else { | |
| 432 top_edge = *rb.GetImageSkiaNamed( | |
| 433 IDR_AURA_WINDOW_HEADER_SHADE_INACTIVE_TOP); | |
| 434 left_edge = *rb.GetImageSkiaNamed( | |
| 435 IDR_AURA_WINDOW_HEADER_SHADE_INACTIVE_LEFT); | |
| 436 right_edge = *rb.GetImageSkiaNamed( | |
| 437 IDR_AURA_WINDOW_HEADER_SHADE_INACTIVE_RIGHT); | |
| 438 bottom_edge = *rb.GetImageSkiaNamed( | |
| 439 IDR_AURA_WINDOW_HEADER_SHADE_INACTIVE_BOTTOM); | |
| 440 } | |
| 441 | |
| 442 int top_left_width = top_left_corner.width(); | |
| 443 int top_left_height = top_left_corner.height(); | |
| 444 if (!top_left_corner.isNull()) { | |
| 445 canvas->DrawImageInt(top_left_corner, | |
| 446 0, 0, top_left_width, top_left_height, | |
| 447 0, 0, top_left_width, top_left_height, | |
| 448 false); | |
| 449 } | |
| 450 | |
| 451 int top_right_height = top_right_corner.height(); | |
| 452 if (!top_right_corner.isNull()) { | |
| 453 canvas->DrawImageInt(top_right_corner, | |
| 454 0, 0, | |
| 455 top_right_corner.width(), top_right_height, | |
| 456 header_view_->width() - top_right_corner.width(), 0, | |
| 457 top_right_corner.width(), top_right_height, | |
| 458 false); | |
| 459 } | |
| 460 | |
| 461 if (!top_edge.isNull()) { | |
|
James Cook
2014/02/03 18:46:35
There's always a top_edge, right?
| |
| 462 canvas->TileImageInt(top_edge, | |
| 463 top_left_width, | |
| 464 0, | |
| 465 header_view_->width() - top_left_width - top_right_corner.width(), | |
| 466 top_edge.height()); | |
| 467 } | |
| 468 | |
| 469 int bottom_height = bottom_edge.height(); | |
| 470 if (!bottom_edge.isNull()) { | |
| 471 canvas->TileImageInt(bottom_edge, | |
| 472 0, header_height_ - bottom_height, | |
| 473 header_view_->width(), bottom_edge.height()); | |
| 474 } | |
| 475 | |
| 476 int left_edge_height = header_height_ - top_left_height - bottom_height; | |
| 477 if (!left_edge.isNull()) { | |
|
James Cook
2014/02/03 18:46:35
ditto
| |
| 478 canvas->TileImageInt(left_edge, | |
| 479 0, top_left_height, | |
| 480 left_edge.width(), left_edge_height); | |
| 481 } | |
| 482 | |
| 483 int right_edge_height = header_height_ - top_right_height - bottom_height; | |
| 484 if (!right_edge.isNull()) { | |
|
James Cook
2014/02/03 18:46:35
ditto
| |
| 485 canvas->TileImageInt(right_edge, | |
| 486 header_view_->width() - right_edge.width(), | |
| 487 top_right_height, | |
| 488 right_edge.width(), | |
| 489 right_edge_height); | |
| 490 } | |
| 491 } | |
| 492 | |
| 452 void HeaderPainter::UpdateCaptionButtonImages() { | 493 void HeaderPainter::UpdateCaptionButtonImages() { |
| 453 if (frame_->IsMaximized() || frame_->IsFullscreen()) { | 494 if (style_ == STYLE_BROWSER) { |
| 495 if (frame_->IsMaximized() || frame_->IsFullscreen()) { | |
| 496 caption_button_container_->SetButtonImages( | |
| 497 CAPTION_BUTTON_ICON_MINIMIZE, | |
| 498 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_MINIMIZE, | |
| 499 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_MINIMIZE, | |
| 500 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_H, | |
| 501 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_P); | |
| 502 caption_button_container_->SetButtonImages( | |
| 503 CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE, | |
| 504 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_SIZE, | |
| 505 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_SIZE, | |
| 506 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_H, | |
| 507 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_P); | |
| 508 caption_button_container_->SetButtonImages( | |
| 509 CAPTION_BUTTON_ICON_CLOSE, | |
| 510 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_CLOSE, | |
| 511 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_CLOSE, | |
| 512 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_H, | |
| 513 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_P); | |
| 514 caption_button_container_->SetButtonImages( | |
| 515 CAPTION_BUTTON_ICON_LEFT_SNAPPED, | |
| 516 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_LEFT_SNAPPED, | |
| 517 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_LEFT_SNAPPED, | |
| 518 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_H, | |
| 519 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_P); | |
| 520 caption_button_container_->SetButtonImages( | |
| 521 CAPTION_BUTTON_ICON_RIGHT_SNAPPED, | |
| 522 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_RIGHT_SNAPPED, | |
| 523 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_RIGHT_SNAPPED, | |
| 524 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_H, | |
| 525 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_P); | |
| 526 } else { | |
| 527 caption_button_container_->SetButtonImages( | |
| 528 CAPTION_BUTTON_ICON_MINIMIZE, | |
| 529 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_MINIMIZE, | |
| 530 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_MINIMIZE, | |
| 531 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_H, | |
| 532 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_P); | |
| 533 caption_button_container_->SetButtonImages( | |
| 534 CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE, | |
| 535 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_SIZE, | |
| 536 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_SIZE, | |
| 537 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_H, | |
| 538 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_P); | |
| 539 caption_button_container_->SetButtonImages( | |
| 540 CAPTION_BUTTON_ICON_CLOSE, | |
| 541 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_CLOSE, | |
| 542 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_CLOSE, | |
| 543 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_H, | |
| 544 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_P); | |
| 545 caption_button_container_->SetButtonImages( | |
| 546 CAPTION_BUTTON_ICON_LEFT_SNAPPED, | |
| 547 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_LEFT_SNAPPED, | |
| 548 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_LEFT_SNAPPED, | |
| 549 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_H, | |
| 550 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_P); | |
| 551 caption_button_container_->SetButtonImages( | |
| 552 CAPTION_BUTTON_ICON_RIGHT_SNAPPED, | |
| 553 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_RIGHT_SNAPPED, | |
| 554 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_RIGHT_SNAPPED, | |
| 555 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_H, | |
| 556 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_P); | |
| 557 } | |
| 558 } else { | |
| 559 caption_button_container_->SetButtonImages( | |
| 560 CAPTION_BUTTON_ICON_MINIMIZE, | |
| 561 IDR_AURA_WINDOW_CONTROL_ICON_MINIMIZE, | |
| 562 IDR_AURA_WINDOW_CONTROL_ICON_MINIMIZE_I, | |
| 563 IDR_AURA_WINDOW_CONTROL_BACKGROUND_H, | |
| 564 IDR_AURA_WINDOW_CONTROL_BACKGROUND_P); | |
| 454 caption_button_container_->SetButtonImages( | 565 caption_button_container_->SetButtonImages( |
| 455 CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE, | 566 CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE, |
| 456 IDR_AURA_WINDOW_MAXIMIZED_RESTORE2, | 567 IDR_AURA_WINDOW_CONTROL_ICON_SIZE, |
| 457 IDR_AURA_WINDOW_MAXIMIZED_RESTORE2_H, | 568 IDR_AURA_WINDOW_CONTROL_ICON_SIZE_I, |
| 458 IDR_AURA_WINDOW_MAXIMIZED_RESTORE2_P); | 569 IDR_AURA_WINDOW_CONTROL_BACKGROUND_H, |
| 570 IDR_AURA_WINDOW_CONTROL_BACKGROUND_P); | |
| 459 caption_button_container_->SetButtonImages( | 571 caption_button_container_->SetButtonImages( |
| 460 CAPTION_BUTTON_ICON_CLOSE, | 572 CAPTION_BUTTON_ICON_CLOSE, |
| 461 IDR_AURA_WINDOW_MAXIMIZED_CLOSE2, | 573 IDR_AURA_WINDOW_CONTROL_ICON_CLOSE, |
| 462 IDR_AURA_WINDOW_MAXIMIZED_CLOSE2_H, | 574 IDR_AURA_WINDOW_CONTROL_ICON_CLOSE_I, |
| 463 IDR_AURA_WINDOW_MAXIMIZED_CLOSE2_P); | 575 IDR_AURA_WINDOW_CONTROL_BACKGROUND_H, |
| 576 IDR_AURA_WINDOW_CONTROL_BACKGROUND_P); | |
| 577 | |
| 578 // There is no dedicated icon for the snap-left and snap-right buttons | |
| 579 // when |frame_| is inactive because they should never be visible while | |
| 580 // |frame_| is inactive. | |
| 464 caption_button_container_->SetButtonImages( | 581 caption_button_container_->SetButtonImages( |
| 465 CAPTION_BUTTON_ICON_LEFT_SNAPPED, | 582 CAPTION_BUTTON_ICON_LEFT_SNAPPED, |
| 466 IDR_AURA_WINDOW_MAXIMIZED_RESTORE2, | 583 IDR_AURA_WINDOW_CONTROL_ICON_LEFT_SNAPPED, |
| 467 IDR_AURA_WINDOW_MAXIMIZED_RESTORE2_H, | 584 IDR_AURA_WINDOW_CONTROL_ICON_LEFT_SNAPPED, |
| 468 IDR_AURA_WINDOW_MAXIMIZED_RESTORE2_P); | 585 IDR_AURA_WINDOW_CONTROL_BACKGROUND_H, |
| 586 IDR_AURA_WINDOW_CONTROL_BACKGROUND_P); | |
| 469 caption_button_container_->SetButtonImages( | 587 caption_button_container_->SetButtonImages( |
| 470 CAPTION_BUTTON_ICON_RIGHT_SNAPPED, | 588 CAPTION_BUTTON_ICON_RIGHT_SNAPPED, |
| 471 IDR_AURA_WINDOW_MAXIMIZED_RESTORE2, | 589 IDR_AURA_WINDOW_CONTROL_ICON_RIGHT_SNAPPED, |
| 472 IDR_AURA_WINDOW_MAXIMIZED_RESTORE2_H, | 590 IDR_AURA_WINDOW_CONTROL_ICON_RIGHT_SNAPPED, |
| 473 IDR_AURA_WINDOW_MAXIMIZED_RESTORE2_P); | 591 IDR_AURA_WINDOW_CONTROL_BACKGROUND_H, |
| 474 } else if (style_ == STYLE_BROWSER) { | 592 IDR_AURA_WINDOW_CONTROL_BACKGROUND_P); |
| 475 caption_button_container_->SetButtonImages( | |
| 476 CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE, | |
| 477 IDR_AURA_WINDOW_MAXIMIZE, | |
| 478 IDR_AURA_WINDOW_MAXIMIZE_H, | |
| 479 IDR_AURA_WINDOW_MAXIMIZE_P); | |
| 480 caption_button_container_->SetButtonImages( | |
| 481 CAPTION_BUTTON_ICON_CLOSE, | |
| 482 IDR_AURA_WINDOW_CLOSE, | |
| 483 IDR_AURA_WINDOW_CLOSE_H, | |
| 484 IDR_AURA_WINDOW_CLOSE_P); | |
| 485 caption_button_container_->SetButtonImages( | |
| 486 CAPTION_BUTTON_ICON_LEFT_SNAPPED, | |
| 487 IDR_AURA_WINDOW_MAXIMIZE, | |
| 488 IDR_AURA_WINDOW_MAXIMIZE_H, | |
| 489 IDR_AURA_WINDOW_MAXIMIZE_P); | |
| 490 caption_button_container_->SetButtonImages( | |
| 491 CAPTION_BUTTON_ICON_RIGHT_SNAPPED, | |
| 492 IDR_AURA_WINDOW_MAXIMIZE, | |
| 493 IDR_AURA_WINDOW_MAXIMIZE_H, | |
| 494 IDR_AURA_WINDOW_MAXIMIZE_P); | |
| 495 } else { | |
| 496 caption_button_container_->SetButtonImages( | |
| 497 CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE, | |
| 498 IDR_AURA_WINDOW_MAXIMIZED_RESTORE, | |
| 499 IDR_AURA_WINDOW_MAXIMIZED_RESTORE_H, | |
| 500 IDR_AURA_WINDOW_MAXIMIZED_RESTORE_P); | |
| 501 caption_button_container_->SetButtonImages( | |
| 502 CAPTION_BUTTON_ICON_CLOSE, | |
| 503 IDR_AURA_WINDOW_MAXIMIZED_CLOSE, | |
| 504 IDR_AURA_WINDOW_MAXIMIZED_CLOSE_H, | |
| 505 IDR_AURA_WINDOW_MAXIMIZED_CLOSE_P); | |
| 506 caption_button_container_->SetButtonImages( | |
| 507 CAPTION_BUTTON_ICON_LEFT_SNAPPED, | |
| 508 IDR_AURA_WINDOW_MAXIMIZED_RESTORE, | |
| 509 IDR_AURA_WINDOW_MAXIMIZED_RESTORE_H, | |
| 510 IDR_AURA_WINDOW_MAXIMIZED_RESTORE_P); | |
| 511 caption_button_container_->SetButtonImages( | |
| 512 CAPTION_BUTTON_ICON_RIGHT_SNAPPED, | |
| 513 IDR_AURA_WINDOW_MAXIMIZED_RESTORE, | |
| 514 IDR_AURA_WINDOW_MAXIMIZED_RESTORE_H, | |
| 515 IDR_AURA_WINDOW_MAXIMIZED_RESTORE_P); | |
| 516 } | 593 } |
| 517 | |
| 518 caption_button_container_->SetButtonImages( | |
| 519 CAPTION_BUTTON_ICON_MINIMIZE, | |
| 520 IDR_AURA_WINDOW_MINIMIZE_SHORT, | |
| 521 IDR_AURA_WINDOW_MINIMIZE_SHORT_H, | |
| 522 IDR_AURA_WINDOW_MINIMIZE_SHORT_P); | |
| 523 } | 594 } |
| 524 | 595 |
| 525 gfx::Rect HeaderPainter::GetHeaderLocalBounds() const { | 596 gfx::Rect HeaderPainter::GetHeaderLocalBounds() const { |
| 526 return gfx::Rect(header_view_->width(), header_height_); | 597 return gfx::Rect(header_view_->width(), header_height_); |
| 527 } | 598 } |
| 528 | 599 |
| 529 int HeaderPainter::GetTitleOffsetX() const { | 600 int HeaderPainter::GetTitleOffsetX() const { |
| 530 return window_icon_ ? | 601 return window_icon_ ? |
| 531 window_icon_->bounds().right() + kTitleIconOffsetX : | 602 window_icon_->bounds().right() + kTitleIconOffsetX : |
| 532 kTitleNoIconOffsetX; | 603 kTitleNoIconOffsetX; |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 551 int title_y = | 622 int title_y = |
| 552 GetCaptionButtonContainerCenterY() - title_font_list.GetHeight() / 2; | 623 GetCaptionButtonContainerCenterY() - title_font_list.GetHeight() / 2; |
| 553 return gfx::Rect( | 624 return gfx::Rect( |
| 554 title_x, | 625 title_x, |
| 555 std::max(0, title_y), | 626 std::max(0, title_y), |
| 556 std::max(0, caption_button_container_->x() - kTitleLogoSpacing - title_x), | 627 std::max(0, caption_button_container_->x() - kTitleLogoSpacing - title_x), |
| 557 title_font_list.GetHeight()); | 628 title_font_list.GetHeight()); |
| 558 } | 629 } |
| 559 | 630 |
| 560 } // namespace ash | 631 } // namespace ash |
| OLD | NEW |