Index: ui/views/controls/menu/menu_image_util.cc |
diff --git a/ui/views/controls/menu/menu_image_util.cc b/ui/views/controls/menu/menu_image_util.cc |
index 2a881da1d2465693f5f640b71fa13eb9e521bbe4..2a585cb2dcb5cdd6a58eda4e6de319fe1b3f1d33 100644 |
--- a/ui/views/controls/menu/menu_image_util.cc |
+++ b/ui/views/controls/menu/menu_image_util.cc |
@@ -105,15 +105,15 @@ gfx::ImageSkia* CreateRadioButtonImage(bool selected) { |
class SubmenuArrowImageSource : public gfx::CanvasImageSource { |
public: |
- SubmenuArrowImageSource() |
- : gfx::CanvasImageSource(GetSubmenuArrowSize(), false) { |
- } |
+ SubmenuArrowImageSource(int image_id) |
+ : gfx::CanvasImageSource(ui::ResourceBundle::GetSharedInstance(). |
+ GetImageNamed(image_id).ToImageSkia()->size(), false), |
+ image_id_(image_id) {} |
virtual ~SubmenuArrowImageSource() {} |
virtual void Draw(gfx::Canvas* canvas) OVERRIDE { |
ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
- const gfx::ImageSkia* r = |
- rb.GetImageNamed(IDR_MENU_HIERARCHY_ARROW).ToImageSkia(); |
+ const gfx::ImageSkia* r = rb.GetImageNamed(image_id_).ToImageSkia(); |
canvas->Scale(-1, 1); |
canvas->DrawImageInt(*r, - r->width(), 0); |
} |
@@ -124,38 +124,52 @@ class SubmenuArrowImageSource : public gfx::CanvasImageSource { |
.GetImageNamed(IDR_MENU_HIERARCHY_ARROW).ToImageSkia()->size(); |
} |
+ int image_id_; |
+ |
DISALLOW_COPY_AND_ASSIGN(SubmenuArrowImageSource); |
}; |
-gfx::ImageSkia* GetRtlSubmenuArrowImage() { |
+gfx::ImageSkia GetRtlSubmenuArrowImage(bool rtl, |
+ bool dark_background) { |
+ int image_id = dark_background ? IDR_MENU_HIERARCHY_ARROW_DARK_BACKGROUND : |
+ IDR_MENU_HIERARCHY_ARROW; |
+ |
+ if (!rtl) { |
+ return ui::ResourceBundle::GetSharedInstance().GetImageNamed(image_id). |
+ AsImageSkia(); |
+ } |
+ |
static gfx::ImageSkia* kRtlArrow = NULL; |
- if (!kRtlArrow) { |
- SubmenuArrowImageSource* source = new SubmenuArrowImageSource(); |
- kRtlArrow = new gfx::ImageSkia(source, source->size()); |
+ static gfx::ImageSkia* kRtlArrowDarkBg = NULL; |
+ gfx::ImageSkia** image = dark_background ? &kRtlArrowDarkBg : &kRtlArrow; |
+ |
+ if (!*image) { |
+ SubmenuArrowImageSource* source = new SubmenuArrowImageSource(image_id); |
+ *image = new gfx::ImageSkia(source, source->size()); |
} |
- return kRtlArrow; |
+ |
+ return **image; |
} |
} // namespace |
namespace views { |
-const gfx::ImageSkia* GetMenuCheckImage() { |
- return ui::ResourceBundle::GetSharedInstance().GetImageNamed( |
- IDR_MENU_CHECK_CHECKED).ToImageSkia(); |
+gfx::ImageSkia GetMenuCheckImage(bool dark_background) { |
+ int image_id = dark_background ? IDR_MENU_CHECK_CHECKED_DARK_BACKGROUND : |
+ IDR_MENU_CHECK_CHECKED; |
+ return ui::ResourceBundle::GetSharedInstance().GetImageNamed(image_id). |
+ AsImageSkia(); |
} |
-const gfx::ImageSkia* GetRadioButtonImage(bool selected) { |
+gfx::ImageSkia GetRadioButtonImage(bool selected) { |
int image_id = selected ? IDR_MENU_RADIO_SELECTED : IDR_MENU_RADIO_EMPTY; |
- return ui::ResourceBundle::GetSharedInstance().GetImageNamed( |
- image_id).ToImageSkia(); |
+ return ui::ResourceBundle::GetSharedInstance().GetImageNamed(image_id). |
+ AsImageSkia(); |
} |
-const gfx::ImageSkia* GetSubmenuArrowImage() { |
- ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
- return base::i18n::IsRTL() |
- ? GetRtlSubmenuArrowImage() |
- : rb.GetImageNamed(IDR_MENU_HIERARCHY_ARROW).ToImageSkia(); |
+gfx::ImageSkia GetSubmenuArrowImage(bool dark_background) { |
+ return GetRtlSubmenuArrowImage(base::i18n::IsRTL(), dark_background); |
} |
} // namespace views |