Index: ash/system/audio/tray_volume.cc |
diff --git a/ash/system/audio/tray_volume.cc b/ash/system/audio/tray_volume.cc |
index 5b9d3a38541c2785474f7b26fc330f31393f64fd..ec0b08a36514cd4ae1f712f5b7690ddd941c4fcc 100644 |
--- a/ash/system/audio/tray_volume.cc |
+++ b/ash/system/audio/tray_volume.cc |
@@ -4,6 +4,8 @@ |
#include "ash/system/audio/tray_volume.h" |
+#include <cmath> |
+ |
#include "ash/shell.h" |
#include "ash/system/tray/system_tray_delegate.h" |
#include "ash/system/tray/tray_constants.h" |
@@ -18,6 +20,7 @@ |
#include "ui/base/resource/resource_bundle.h" |
#include "ui/gfx/canvas.h" |
#include "ui/gfx/image/image.h" |
+#include "ui/gfx/image/image_skia_operations.h" |
#include "ui/views/controls/button/image_button.h" |
#include "ui/views/controls/image_view.h" |
#include "ui/views/controls/label.h" |
@@ -53,24 +56,14 @@ class VolumeButton : public views::ToggleImageButton { |
void Update() { |
ash::SystemTrayDelegate* delegate = |
ash::Shell::GetInstance()->tray_delegate(); |
- int level = static_cast<int>(delegate->GetVolumeLevel() * 100); |
- int image_index = level / (100 / kVolumeLevel); |
- if (level > 0 && image_index == 0) |
- ++image_index; |
- if (level == 100) |
- image_index = kVolumeLevel - 1; |
- else if (image_index == kVolumeLevel - 1) |
- --image_index; |
- // Index 0 is reserved for mute. |
- if (delegate->IsAudioMuted()) |
- image_index = 0; |
- else |
- ++image_index; |
+ int image_index = delegate->IsAudioMuted() ? |
+ 0 : std::ceil(delegate->GetVolumeLevel() * kVolumeLevel); |
Daniel Erat
2012/07/24 00:24:33
Not your fault, but do you mind updating ash/syste
Daniel Erat
2012/07/24 00:24:33
The old code looks like it used kVolumeLevel - 1 f
oshima
2012/07/24 00:44:21
Done.
oshima
2012/07/24 00:44:21
overlooked original behavior. Fixed.
|
+ |
if (image_index != image_index_) { |
- SkIRect region = SkIRect::MakeXYWH(0, image_index * kVolumeImageHeight, |
- kVolumeImageWidth, kVolumeImageHeight); |
- gfx::ImageSkia image_skia; |
- image_.ToImageSkia()->extractSubset(&image_skia, region); |
+ gfx::Rect region(0, image_index * kVolumeImageHeight, |
+ kVolumeImageWidth, kVolumeImageHeight); |
+ gfx::ImageSkia image_skia = gfx::ImageSkiaOperations::ExtractSubset( |
+ *(image_.ToImageSkia()), region); |
SetImage(views::CustomButton::BS_NORMAL, &image_skia); |
image_index_ = image_index; |
} |