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_ = rb.GetImageNamed( | |
174 IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_TOP_LEFT).ToImageSkia(); | |
175 top_edge_ = rb.GetImageNamed( | |
176 IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_TOP).ToImageSkia(); | |
177 top_right_corner_ = rb.GetImageNamed( | |
178 IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_TOP_RIGHT).ToImageSkia(); | |
179 header_left_edge_ = rb.GetImageNamed( | |
180 IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_LEFT).ToImageSkia(); | |
181 header_right_edge_ = rb.GetImageNamed( | |
182 IDR_AURA_BROWSER_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; |
| 322 |
368 canvas->FillRect(gfx::Rect(0, | 323 canvas->FillRect(gfx::Rect(0, |
369 header_height_ - kHeaderContentSeparatorSize, | 324 header_height_ - kHeaderContentSeparatorSize, |
370 header_view_->width(), | 325 header_view_->width(), |
371 kHeaderContentSeparatorSize), | 326 kHeaderContentSeparatorSize), |
372 kHeaderContentSeparatorColor); | 327 color); |
373 } | 328 } |
374 | 329 |
375 int HeaderPainter::HeaderContentSeparatorSize() const { | 330 int HeaderPainter::HeaderContentSeparatorSize() const { |
376 return kHeaderContentSeparatorSize; | 331 return kHeaderContentSeparatorSize; |
377 } | 332 } |
378 | 333 |
379 void HeaderPainter::PaintTitleBar(gfx::Canvas* canvas, | 334 void HeaderPainter::PaintTitleBar(gfx::Canvas* canvas, |
380 const gfx::FontList& title_font_list) { | 335 const gfx::FontList& title_font_list) { |
381 // The window icon is painted by its own views::View. | 336 // The window icon is painted by its own views::View. |
382 views::WidgetDelegate* delegate = frame_->widget_delegate(); | 337 views::WidgetDelegate* delegate = frame_->widget_delegate(); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
442 /////////////////////////////////////////////////////////////////////////////// | 397 /////////////////////////////////////////////////////////////////////////////// |
443 // gfx::AnimationDelegate overrides: | 398 // gfx::AnimationDelegate overrides: |
444 | 399 |
445 void HeaderPainter::AnimationProgressed(const gfx::Animation* animation) { | 400 void HeaderPainter::AnimationProgressed(const gfx::Animation* animation) { |
446 header_view_->SchedulePaintInRect(GetHeaderLocalBounds()); | 401 header_view_->SchedulePaintInRect(GetHeaderLocalBounds()); |
447 } | 402 } |
448 | 403 |
449 /////////////////////////////////////////////////////////////////////////////// | 404 /////////////////////////////////////////////////////////////////////////////// |
450 // HeaderPainter, private: | 405 // HeaderPainter, private: |
451 | 406 |
| 407 void HeaderPainter::PaintBorder(gfx::Canvas* canvas, Mode mode) { |
| 408 if (frame_->IsMaximized() || |
| 409 frame_->IsFullscreen() || |
| 410 (style_ == STYLE_OTHER && mode == MODE_ACTIVE)) { |
| 411 return; |
| 412 } |
| 413 |
| 414 gfx::ImageSkia top_left_corner; |
| 415 gfx::ImageSkia top_right_corner; |
| 416 gfx::ImageSkia top_edge; |
| 417 gfx::ImageSkia left_edge; |
| 418 gfx::ImageSkia right_edge; |
| 419 gfx::ImageSkia bottom_edge; |
| 420 |
| 421 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
| 422 if (style_ == STYLE_BROWSER) { |
| 423 top_left_corner = *rb.GetImageSkiaNamed( |
| 424 IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_TOP_LEFT); |
| 425 top_right_corner = *rb.GetImageSkiaNamed( |
| 426 IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_TOP_RIGHT); |
| 427 top_edge = *rb.GetImageSkiaNamed(IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_TOP); |
| 428 left_edge = *rb.GetImageSkiaNamed( |
| 429 IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_LEFT); |
| 430 right_edge = *rb.GetImageSkiaNamed( |
| 431 IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_RIGHT); |
| 432 } else { |
| 433 top_edge = *rb.GetImageSkiaNamed( |
| 434 IDR_AURA_WINDOW_HEADER_SHADE_INACTIVE_TOP); |
| 435 left_edge = *rb.GetImageSkiaNamed( |
| 436 IDR_AURA_WINDOW_HEADER_SHADE_INACTIVE_LEFT); |
| 437 right_edge = *rb.GetImageSkiaNamed( |
| 438 IDR_AURA_WINDOW_HEADER_SHADE_INACTIVE_RIGHT); |
| 439 bottom_edge = *rb.GetImageSkiaNamed( |
| 440 IDR_AURA_WINDOW_HEADER_SHADE_INACTIVE_BOTTOM); |
| 441 } |
| 442 |
| 443 DCHECK(!top_edge.isNull()); |
| 444 DCHECK(!left_edge.isNull()); |
| 445 DCHECK(!right_edge.isNull()); |
| 446 |
| 447 int top_left_width = top_left_corner.width(); |
| 448 int top_left_height = top_left_corner.height(); |
| 449 if (!top_left_corner.isNull()) { |
| 450 canvas->DrawImageInt(top_left_corner, 0, 0); |
| 451 } |
| 452 |
| 453 int top_right_height = top_right_corner.height(); |
| 454 if (!top_right_corner.isNull()) { |
| 455 canvas->DrawImageInt(top_right_corner, |
| 456 header_view_->width() - top_right_corner.width(), |
| 457 top_right_height); |
| 458 } |
| 459 |
| 460 canvas->TileImageInt(top_edge, |
| 461 top_left_width, |
| 462 0, |
| 463 header_view_->width() - top_left_width - top_right_corner.width(), |
| 464 top_edge.height()); |
| 465 |
| 466 // TODO(pkotwicz): Compute |bottom| more accurately. The computation is |
| 467 // inaccurate for browser windows. |
| 468 int bottom = header_height_ - kHeaderContentSeparatorSize; |
| 469 int bottom_height = bottom_edge.height(); |
| 470 if (!bottom_edge.isNull()) { |
| 471 canvas->TileImageInt(bottom_edge, |
| 472 0, bottom - bottom_height, |
| 473 header_view_->width(), bottom_height); |
| 474 } |
| 475 |
| 476 int left_edge_height = bottom - bottom_height - top_left_height; |
| 477 canvas->TileImageInt(left_edge, |
| 478 0, top_left_height, |
| 479 left_edge.width(), left_edge_height); |
| 480 |
| 481 int right_edge_height = bottom - bottom_height - top_right_height; |
| 482 canvas->TileImageInt(right_edge, |
| 483 header_view_->width() - right_edge.width(), |
| 484 top_right_height, |
| 485 right_edge.width(), |
| 486 right_edge_height); |
| 487 } |
| 488 |
452 void HeaderPainter::UpdateCaptionButtonImages() { | 489 void HeaderPainter::UpdateCaptionButtonImages() { |
453 if (frame_->IsMaximized() || frame_->IsFullscreen()) { | 490 if (style_ == STYLE_BROWSER) { |
| 491 if (frame_->IsMaximized() || frame_->IsFullscreen()) { |
| 492 caption_button_container_->SetButtonImages( |
| 493 CAPTION_BUTTON_ICON_MINIMIZE, |
| 494 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_MINIMIZE, |
| 495 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_MINIMIZE, |
| 496 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_H, |
| 497 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_P); |
| 498 caption_button_container_->SetButtonImages( |
| 499 CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE, |
| 500 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_SIZE, |
| 501 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_SIZE, |
| 502 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_H, |
| 503 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_P); |
| 504 caption_button_container_->SetButtonImages( |
| 505 CAPTION_BUTTON_ICON_CLOSE, |
| 506 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_CLOSE, |
| 507 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_CLOSE, |
| 508 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_H, |
| 509 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_P); |
| 510 caption_button_container_->SetButtonImages( |
| 511 CAPTION_BUTTON_ICON_LEFT_SNAPPED, |
| 512 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_LEFT_SNAPPED, |
| 513 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_LEFT_SNAPPED, |
| 514 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_H, |
| 515 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_P); |
| 516 caption_button_container_->SetButtonImages( |
| 517 CAPTION_BUTTON_ICON_RIGHT_SNAPPED, |
| 518 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_RIGHT_SNAPPED, |
| 519 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_RIGHT_SNAPPED, |
| 520 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_H, |
| 521 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_P); |
| 522 } else { |
| 523 caption_button_container_->SetButtonImages( |
| 524 CAPTION_BUTTON_ICON_MINIMIZE, |
| 525 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_MINIMIZE, |
| 526 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_MINIMIZE, |
| 527 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_H, |
| 528 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_P); |
| 529 caption_button_container_->SetButtonImages( |
| 530 CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE, |
| 531 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_SIZE, |
| 532 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_SIZE, |
| 533 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_H, |
| 534 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_P); |
| 535 caption_button_container_->SetButtonImages( |
| 536 CAPTION_BUTTON_ICON_CLOSE, |
| 537 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_CLOSE, |
| 538 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_CLOSE, |
| 539 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_H, |
| 540 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_P); |
| 541 caption_button_container_->SetButtonImages( |
| 542 CAPTION_BUTTON_ICON_LEFT_SNAPPED, |
| 543 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_LEFT_SNAPPED, |
| 544 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_LEFT_SNAPPED, |
| 545 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_H, |
| 546 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_P); |
| 547 caption_button_container_->SetButtonImages( |
| 548 CAPTION_BUTTON_ICON_RIGHT_SNAPPED, |
| 549 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_RIGHT_SNAPPED, |
| 550 IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_RIGHT_SNAPPED, |
| 551 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_H, |
| 552 IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_P); |
| 553 } |
| 554 } else { |
| 555 caption_button_container_->SetButtonImages( |
| 556 CAPTION_BUTTON_ICON_MINIMIZE, |
| 557 IDR_AURA_WINDOW_CONTROL_ICON_MINIMIZE, |
| 558 IDR_AURA_WINDOW_CONTROL_ICON_MINIMIZE_I, |
| 559 IDR_AURA_WINDOW_CONTROL_BACKGROUND_H, |
| 560 IDR_AURA_WINDOW_CONTROL_BACKGROUND_P); |
454 caption_button_container_->SetButtonImages( | 561 caption_button_container_->SetButtonImages( |
455 CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE, | 562 CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE, |
456 IDR_AURA_WINDOW_MAXIMIZED_RESTORE2, | 563 IDR_AURA_WINDOW_CONTROL_ICON_SIZE, |
457 IDR_AURA_WINDOW_MAXIMIZED_RESTORE2_H, | 564 IDR_AURA_WINDOW_CONTROL_ICON_SIZE_I, |
458 IDR_AURA_WINDOW_MAXIMIZED_RESTORE2_P); | 565 IDR_AURA_WINDOW_CONTROL_BACKGROUND_H, |
| 566 IDR_AURA_WINDOW_CONTROL_BACKGROUND_P); |
459 caption_button_container_->SetButtonImages( | 567 caption_button_container_->SetButtonImages( |
460 CAPTION_BUTTON_ICON_CLOSE, | 568 CAPTION_BUTTON_ICON_CLOSE, |
461 IDR_AURA_WINDOW_MAXIMIZED_CLOSE2, | 569 IDR_AURA_WINDOW_CONTROL_ICON_CLOSE, |
462 IDR_AURA_WINDOW_MAXIMIZED_CLOSE2_H, | 570 IDR_AURA_WINDOW_CONTROL_ICON_CLOSE_I, |
463 IDR_AURA_WINDOW_MAXIMIZED_CLOSE2_P); | 571 IDR_AURA_WINDOW_CONTROL_BACKGROUND_H, |
| 572 IDR_AURA_WINDOW_CONTROL_BACKGROUND_P); |
| 573 |
| 574 // There is no dedicated icon for the snap-left and snap-right buttons |
| 575 // when |frame_| is inactive because they should never be visible while |
| 576 // |frame_| is inactive. |
464 caption_button_container_->SetButtonImages( | 577 caption_button_container_->SetButtonImages( |
465 CAPTION_BUTTON_ICON_LEFT_SNAPPED, | 578 CAPTION_BUTTON_ICON_LEFT_SNAPPED, |
466 IDR_AURA_WINDOW_MAXIMIZED_RESTORE2, | 579 IDR_AURA_WINDOW_CONTROL_ICON_LEFT_SNAPPED, |
467 IDR_AURA_WINDOW_MAXIMIZED_RESTORE2_H, | 580 IDR_AURA_WINDOW_CONTROL_ICON_LEFT_SNAPPED, |
468 IDR_AURA_WINDOW_MAXIMIZED_RESTORE2_P); | 581 IDR_AURA_WINDOW_CONTROL_BACKGROUND_H, |
| 582 IDR_AURA_WINDOW_CONTROL_BACKGROUND_P); |
469 caption_button_container_->SetButtonImages( | 583 caption_button_container_->SetButtonImages( |
470 CAPTION_BUTTON_ICON_RIGHT_SNAPPED, | 584 CAPTION_BUTTON_ICON_RIGHT_SNAPPED, |
471 IDR_AURA_WINDOW_MAXIMIZED_RESTORE2, | 585 IDR_AURA_WINDOW_CONTROL_ICON_RIGHT_SNAPPED, |
472 IDR_AURA_WINDOW_MAXIMIZED_RESTORE2_H, | 586 IDR_AURA_WINDOW_CONTROL_ICON_RIGHT_SNAPPED, |
473 IDR_AURA_WINDOW_MAXIMIZED_RESTORE2_P); | 587 IDR_AURA_WINDOW_CONTROL_BACKGROUND_H, |
474 } else if (style_ == STYLE_BROWSER) { | 588 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 } | 589 } |
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 } | 590 } |
524 | 591 |
525 gfx::Rect HeaderPainter::GetHeaderLocalBounds() const { | 592 gfx::Rect HeaderPainter::GetHeaderLocalBounds() const { |
526 return gfx::Rect(header_view_->width(), header_height_); | 593 return gfx::Rect(header_view_->width(), header_height_); |
527 } | 594 } |
528 | 595 |
529 int HeaderPainter::GetTitleOffsetX() const { | 596 int HeaderPainter::GetTitleOffsetX() const { |
530 return window_icon_ ? | 597 return window_icon_ ? |
531 window_icon_->bounds().right() + kTitleIconOffsetX : | 598 window_icon_->bounds().right() + kTitleIconOffsetX : |
532 kTitleNoIconOffsetX; | 599 kTitleNoIconOffsetX; |
(...skipping 18 matching lines...) Expand all Loading... |
551 int title_y = | 618 int title_y = |
552 GetCaptionButtonContainerCenterY() - title_font_list.GetHeight() / 2; | 619 GetCaptionButtonContainerCenterY() - title_font_list.GetHeight() / 2; |
553 return gfx::Rect( | 620 return gfx::Rect( |
554 title_x, | 621 title_x, |
555 std::max(0, title_y), | 622 std::max(0, title_y), |
556 std::max(0, caption_button_container_->x() - kTitleLogoSpacing - title_x), | 623 std::max(0, caption_button_container_->x() - kTitleLogoSpacing - title_x), |
557 title_font_list.GetHeight()); | 624 title_font_list.GetHeight()); |
558 } | 625 } |
559 | 626 |
560 } // namespace ash | 627 } // namespace ash |
OLD | NEW |