| Index: ash/wm/caption_buttons/frame_caption_button.cc
|
| diff --git a/ash/wm/caption_buttons/frame_caption_button.cc b/ash/wm/caption_buttons/frame_caption_button.cc
|
| index 2f468f80dbfb29a375943989775b52d1b1a37e48..cce6cc72202e84c5275330fc0aa4c4b7df2dcf66 100644
|
| --- a/ash/wm/caption_buttons/frame_caption_button.cc
|
| +++ b/ash/wm/caption_buttons/frame_caption_button.cc
|
| @@ -28,10 +28,12 @@ FrameCaptionButton::FrameCaptionButton(views::ButtonListener* listener,
|
| CaptionButtonIcon icon)
|
| : CustomButton(listener),
|
| icon_(icon),
|
| + paint_as_active_(false),
|
| last_paint_scale_(1.0f),
|
| - normal_image_id_(-1),
|
| - hovered_image_id_(-1),
|
| - pressed_image_id_(-1),
|
| + icon_image_id_(-1),
|
| + inactive_icon_image_id_(-1),
|
| + hovered_background_image_id_(-1),
|
| + pressed_background_image_id_(-1),
|
| swap_images_animation_(new gfx::SlideAnimation(this)) {
|
| swap_images_animation_->Reset(1);
|
| EnableCanvasFlippingForRTLUI(true);
|
| @@ -42,16 +44,18 @@ FrameCaptionButton::~FrameCaptionButton() {
|
|
|
| void FrameCaptionButton::SetImages(CaptionButtonIcon icon,
|
| Animate animate,
|
| - int normal_image_id,
|
| - int hovered_image_id,
|
| - int pressed_image_id) {
|
| + int icon_image_id,
|
| + int inactive_icon_image_id,
|
| + int hovered_background_image_id,
|
| + int pressed_background_image_id) {
|
| // The early return is dependant on |animate| because callers use SetImages()
|
| // with ANIMATE_NO to progress the crossfade animation to the end.
|
| if (icon == icon_ &&
|
| (animate == ANIMATE_YES || !swap_images_animation_->is_animating()) &&
|
| - normal_image_id == normal_image_id_ &&
|
| - hovered_image_id == hovered_image_id_ &&
|
| - pressed_image_id == pressed_image_id_) {
|
| + icon_image_id == icon_image_id_ &&
|
| + inactive_icon_image_id == inactive_icon_image_id_ &&
|
| + hovered_background_image_id == hovered_background_image_id_ &&
|
| + pressed_background_image_id == pressed_background_image_id_) {
|
| return;
|
| }
|
|
|
| @@ -62,14 +66,18 @@ void FrameCaptionButton::SetImages(CaptionButtonIcon icon,
|
| }
|
|
|
| icon_ = icon;
|
| - normal_image_id_ = normal_image_id;
|
| - hovered_image_id_ = hovered_image_id;
|
| - pressed_image_id_ = pressed_image_id;
|
| + icon_image_id_ = icon_image_id;
|
| + inactive_icon_image_id_ = inactive_icon_image_id;
|
| + hovered_background_image_id_ = hovered_background_image_id;
|
| + pressed_background_image_id_ = pressed_background_image_id;
|
|
|
| ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
|
| - normal_image_ = *rb.GetImageSkiaNamed(normal_image_id);
|
| - hovered_image_ = *rb.GetImageSkiaNamed(hovered_image_id);
|
| - pressed_image_ = *rb.GetImageSkiaNamed(pressed_image_id);
|
| + icon_image_ = *rb.GetImageSkiaNamed(icon_image_id);
|
| + inactive_icon_image_ = *rb.GetImageSkiaNamed(inactive_icon_image_id);
|
| + hovered_background_image_ = *rb.GetImageSkiaNamed(
|
| + hovered_background_image_id);
|
| + pressed_background_image_ = *rb.GetImageSkiaNamed(
|
| + pressed_background_image_id);
|
|
|
| if (animate == ANIMATE_YES) {
|
| swap_images_animation_->Reset(0);
|
| @@ -87,7 +95,8 @@ bool FrameCaptionButton::IsAnimatingImageSwap() const {
|
| }
|
|
|
| gfx::Size FrameCaptionButton::GetPreferredSize() {
|
| - return normal_image_.isNull() ? gfx::Size() : normal_image_.size();
|
| + return hovered_background_image_.isNull() ?
|
| + gfx::Size() : hovered_background_image_.size();
|
| }
|
|
|
| const char* FrameCaptionButton::GetClassName() const {
|
| @@ -153,20 +162,19 @@ void FrameCaptionButton::StateChanged() {
|
| void FrameCaptionButton::PaintWithAnimationEndState(
|
| gfx::Canvas* canvas,
|
| int opacity) {
|
| - gfx::ImageSkia img;
|
| - if (state() == STATE_HOVERED) {
|
| - img = hovered_image_;
|
| - } else if (state() == STATE_PRESSED) {
|
| - img = pressed_image_;
|
| - } else {
|
| - img = normal_image_;
|
| - }
|
| -
|
| - if (!img.isNull()) {
|
| - SkPaint paint;
|
| - paint.setAlpha(opacity);
|
| - canvas->DrawImageInt(img, 0, 0, paint);
|
| - }
|
| + SkPaint paint;
|
| + paint.setAlpha(opacity);
|
| + if (state() == STATE_HOVERED)
|
| + canvas->DrawImageInt(hovered_background_image_, 0, 0, paint);
|
| + else if (state() == STATE_PRESSED)
|
| + canvas->DrawImageInt(pressed_background_image_, 0, 0, paint);
|
| +
|
| + gfx::ImageSkia icon_image = paint_as_active_ ?
|
| + icon_image_ : inactive_icon_image_;
|
| + canvas->DrawImageInt(icon_image,
|
| + (width() - icon_image.width()) / 2,
|
| + (height() - icon_image.height()) / 2,
|
| + paint);
|
| }
|
|
|
| } // namespace ash
|
|
|