Index: apps/ui/views/app_window_frame_view.cc |
diff --git a/apps/ui/views/app_window_frame_view.cc b/apps/ui/views/app_window_frame_view.cc |
index db4d52b4709df3c62cc3cd26a0337c0b54ae23d9..44ed714d7e4c6b6050bbc6350abbd7cd5a3bba17 100644 |
--- a/apps/ui/views/app_window_frame_view.cc |
+++ b/apps/ui/views/app_window_frame_view.cc |
@@ -15,6 +15,7 @@ |
#include "ui/base/l10n/l10n_util.h" |
#include "ui/base/resource/resource_bundle.h" |
#include "ui/gfx/canvas.h" |
+#include "ui/gfx/color_utils.h" |
#include "ui/gfx/image/image.h" |
#include "ui/gfx/path.h" |
#include "ui/views/controls/button/image_button.h" |
@@ -73,11 +74,9 @@ void AppWindowFrameView::Init() { |
close_button_->SetAccessibleName( |
l10n_util::GetStringUTF16(IDS_APP_ACCNAME_CLOSE)); |
AddChildView(close_button_); |
+ // STATE_NORMAL images are set in SetButtonImagesForFrame, not here. |
maximize_button_ = new views::ImageButton(this); |
maximize_button_->SetImage( |
- views::CustomButton::STATE_NORMAL, |
- rb.GetNativeImageNamed(IDR_APP_WINDOW_MAXIMIZE).ToImageSkia()); |
- maximize_button_->SetImage( |
views::CustomButton::STATE_HOVERED, |
rb.GetNativeImageNamed(IDR_APP_WINDOW_MAXIMIZE_H).ToImageSkia()); |
maximize_button_->SetImage( |
@@ -91,9 +90,6 @@ void AppWindowFrameView::Init() { |
AddChildView(maximize_button_); |
restore_button_ = new views::ImageButton(this); |
restore_button_->SetImage( |
- views::CustomButton::STATE_NORMAL, |
- rb.GetNativeImageNamed(IDR_APP_WINDOW_RESTORE).ToImageSkia()); |
- restore_button_->SetImage( |
views::CustomButton::STATE_HOVERED, |
rb.GetNativeImageNamed(IDR_APP_WINDOW_RESTORE_H).ToImageSkia()); |
restore_button_->SetImage( |
@@ -104,9 +100,6 @@ void AppWindowFrameView::Init() { |
AddChildView(restore_button_); |
minimize_button_ = new views::ImageButton(this); |
minimize_button_->SetImage( |
- views::CustomButton::STATE_NORMAL, |
- rb.GetNativeImageNamed(IDR_APP_WINDOW_MINIMIZE).ToImageSkia()); |
- minimize_button_->SetImage( |
views::CustomButton::STATE_HOVERED, |
rb.GetNativeImageNamed(IDR_APP_WINDOW_MINIMIZE_H).ToImageSkia()); |
minimize_button_->SetImage( |
@@ -115,6 +108,8 @@ void AppWindowFrameView::Init() { |
minimize_button_->SetAccessibleName( |
l10n_util::GetStringUTF16(IDS_APP_ACCNAME_MINIMIZE)); |
AddChildView(minimize_button_); |
+ |
+ SetButtonImagesForFrame(); |
} |
} |
@@ -304,14 +299,12 @@ void AppWindowFrameView::OnPaint(gfx::Canvas* canvas) { |
rb.GetNativeImageNamed(IDR_APP_WINDOW_CLOSE_U).ToImageSkia()); |
} |
- // TODO(jeremya): different look for inactive? |
+ SetButtonImagesForFrame(); |
+ // TODO(benwells): different look for inactive by default. |
SkPaint paint; |
paint.setAntiAlias(false); |
paint.setStyle(SkPaint::kFill_Style); |
- if (widget_->IsActive()) |
- paint.setColor(active_frame_color_); |
- else |
- paint.setColor(inactive_frame_color_); |
+ paint.setColor(CurrentFrameColor()); |
gfx::Path path; |
path.moveTo(0, 0); |
path.lineTo(width(), 0); |
@@ -366,4 +359,42 @@ void AppWindowFrameView::ButtonPressed(views::Button* sender, |
widget_->Minimize(); |
} |
+SkColor AppWindowFrameView::CurrentFrameColor() { |
+ return widget_->IsActive() ? active_frame_color_ : inactive_frame_color_; |
+} |
+ |
+void AppWindowFrameView::SetButtonImagesForFrame() { |
+ DCHECK(draw_frame_); |
+ |
+ // If the frame is dark, we should use the light images so they have |
+ // some contrast. |
+ unsigned char frame_luma = |
+ color_utils::GetLuminanceForColor(CurrentFrameColor()); |
+ const unsigned char kLuminanceThreshold = 100; |
+ bool use_light = frame_luma < kLuminanceThreshold; |
+ |
+ ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
+ if (use_light) { |
+ maximize_button_->SetImage( |
+ views::CustomButton::STATE_NORMAL, |
+ rb.GetNativeImageNamed(IDR_APP_WINDOW_MAXIMIZE_L).ToImageSkia()); |
+ restore_button_->SetImage( |
+ views::CustomButton::STATE_NORMAL, |
+ rb.GetNativeImageNamed(IDR_APP_WINDOW_RESTORE_L).ToImageSkia()); |
+ minimize_button_->SetImage( |
+ views::CustomButton::STATE_NORMAL, |
+ rb.GetNativeImageNamed(IDR_APP_WINDOW_MINIMIZE_L).ToImageSkia()); |
+ } else { |
+ maximize_button_->SetImage( |
+ views::CustomButton::STATE_NORMAL, |
+ rb.GetNativeImageNamed(IDR_APP_WINDOW_MAXIMIZE).ToImageSkia()); |
+ restore_button_->SetImage( |
+ views::CustomButton::STATE_NORMAL, |
+ rb.GetNativeImageNamed(IDR_APP_WINDOW_RESTORE).ToImageSkia()); |
+ minimize_button_->SetImage( |
+ views::CustomButton::STATE_NORMAL, |
+ rb.GetNativeImageNamed(IDR_APP_WINDOW_MINIMIZE).ToImageSkia()); |
+ } |
+} |
+ |
} // namespace apps |