summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/chromeos/dom_ui/menu_ui.cc2
-rw-r--r--views/controls/menu/menu_image_util_gtk.cc (renamed from views/controls/menu/radio_button_image_gtk.cc)26
-rw-r--r--views/controls/menu/menu_image_util_gtk.h (renamed from views/controls/menu/radio_button_image_gtk.h)11
-rw-r--r--views/controls/menu/menu_item_view_gtk.cc20
-rw-r--r--views/views.gyp4
5 files changed, 45 insertions, 18 deletions
diff --git a/chrome/browser/chromeos/dom_ui/menu_ui.cc b/chrome/browser/chromeos/dom_ui/menu_ui.cc
index 741961a..6aec219 100644
--- a/chrome/browser/chromeos/dom_ui/menu_ui.cc
+++ b/chrome/browser/chromeos/dom_ui/menu_ui.cc
@@ -34,7 +34,7 @@
#include "ui/gfx/font.h"
#include "views/accelerator.h"
#include "views/controls/menu/menu_config.h"
-#include "views/controls/menu/radio_button_image_gtk.h"
+#include "views/controls/menu/menu_image_util_gtk.h"
#include "views/widget/widget_gtk.h"
namespace {
diff --git a/views/controls/menu/radio_button_image_gtk.cc b/views/controls/menu/menu_image_util_gtk.cc
index e22fbc8..b59d666 100644
--- a/views/controls/menu/radio_button_image_gtk.cc
+++ b/views/controls/menu/menu_image_util_gtk.cc
@@ -1,10 +1,13 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "views/controls/menu/radio_button_image_gtk.h"
+#include "views/controls/menu/menu_image_util_gtk.h"
+#include "base/i18n/rtl.h"
+#include "grit/app_resources.h"
#include "third_party/skia/include/effects/SkGradientShader.h"
+#include "ui/base/resource/resource_bundle.h"
#include "ui/gfx/canvas_skia.h"
namespace {
@@ -79,6 +82,19 @@ SkBitmap* CreateRadioButtonImage(bool selected) {
return new SkBitmap(canvas.ExtractBitmap());
}
+SkBitmap* GetRtlSubmenuArrowImage() {
+ static SkBitmap* kRtlArrow = NULL;
+ if (!kRtlArrow) {
+ ResourceBundle& rb = ResourceBundle::GetSharedInstance();
+ SkBitmap* r = rb.GetBitmapNamed(IDR_MENU_ARROW);
+ gfx::CanvasSkia canvas(r->width(), r->height(), false);
+ canvas.ScaleInt(-1, 1);
+ canvas.DrawBitmapInt(*r, - r->width(), 0);
+ kRtlArrow = new SkBitmap(canvas.ExtractBitmap());
+ }
+ return kRtlArrow;
+}
+
} // namespace
namespace views {
@@ -90,4 +106,10 @@ const SkBitmap* GetRadioButtonImage(bool selected) {
return selected ? kRadioOn : kRadioOff;
}
+const SkBitmap* GetSubmenuArrowImage() {
+ return base::i18n::IsRTL() ?
+ GetRtlSubmenuArrowImage() :
+ ResourceBundle::GetSharedInstance().GetBitmapNamed(IDR_MENU_ARROW);
+}
+
} // namespace views;
diff --git a/views/controls/menu/radio_button_image_gtk.h b/views/controls/menu/menu_image_util_gtk.h
index b606c34..f4c0ead 100644
--- a/views/controls/menu/radio_button_image_gtk.h
+++ b/views/controls/menu/menu_image_util_gtk.h
@@ -1,9 +1,9 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef VIEWS_CONTROLS_MENU_RADIO_BUTTON_IMAGE_H_
-#define VIEWS_CONTROLS_MENU_RADIO_BUTTON_IMAGE_H_
+#ifndef VIEWS_CONTROLS_MENU_MENU_IMAGE_UTIL_GTK_H_
+#define VIEWS_CONTROLS_MENU_MENU_IMAGE_UTIL_GTK_H_
#pragma once
#include "third_party/skia/include/core/SkBitmap.h"
@@ -16,6 +16,9 @@ namespace views {
// The returned image is global object and should not be freed.
const SkBitmap* GetRadioButtonImage(bool selected);
+// Returns the image for submenu arrow for current RTL setting.
+const SkBitmap* GetSubmenuArrowImage();
+
} // namespace views
-#endif // VIEWS_CONTROLS_MENU_RADIO_BUTTON_IMAGE_H_
+#endif // VIEWS_CONTROLS_MENU_MENU_IMAGE_UTIL_GTK_H_
diff --git a/views/controls/menu/menu_item_view_gtk.cc b/views/controls/menu/menu_item_view_gtk.cc
index c995c19..3a67417 100644
--- a/views/controls/menu/menu_item_view_gtk.cc
+++ b/views/controls/menu/menu_item_view_gtk.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -12,7 +12,7 @@
#include "ui/gfx/favicon_size.h"
#include "views/controls/button/text_button.h"
#include "views/controls/menu/menu_config.h"
-#include "views/controls/menu/radio_button_image_gtk.h"
+#include "views/controls/menu/menu_image_util_gtk.h"
#include "views/controls/menu/submenu_view.h"
namespace views {
@@ -69,11 +69,14 @@ void MenuItemView::Paint(gfx::Canvas* canvas, bool for_drag) {
} else if (type_ == RADIO) {
const SkBitmap* image =
GetRadioButtonImage(GetDelegate()->IsItemChecked(GetCommand()));
- canvas->DrawBitmapInt(*image,
- icon_x,
- top_margin +
- (height() - top_margin - bottom_margin -
- image->height()) / 2);
+ gfx::Rect radio_bounds(icon_x,
+ top_margin +
+ (height() - top_margin - bottom_margin -
+ image->height()) / 2,
+ image->width(),
+ image->height());
+ AdjustBoundsForRTLUI(&radio_bounds);
+ canvas->DrawBitmapInt(*image, radio_bounds.x(), radio_bounds.y());
}
// Render the foreground.
@@ -117,8 +120,7 @@ void MenuItemView::Paint(gfx::Canvas* canvas, bool for_drag) {
config.arrow_width) / 2,
config.arrow_width, height());
AdjustBoundsForRTLUI(&arrow_bounds);
- ResourceBundle& rb = ResourceBundle::GetSharedInstance();
- canvas->DrawBitmapInt(*rb.GetBitmapNamed(IDR_MENU_ARROW),
+ canvas->DrawBitmapInt(*GetSubmenuArrowImage(),
arrow_bounds.x(), arrow_bounds.y());
}
}
diff --git a/views/views.gyp b/views/views.gyp
index 36aa1e7..b044497 100644
--- a/views/views.gyp
+++ b/views/views.gyp
@@ -165,8 +165,8 @@
'controls/menu/native_menu_x.h',
'controls/menu/nested_dispatcher_gtk.cc',
'controls/menu/nested_dispatcher_gtk.h',
- 'controls/menu/radio_button_image_gtk.cc',
- 'controls/menu/radio_button_image_gtk.h',
+ 'controls/menu/menu_image_util_gtk.cc',
+ 'controls/menu/menu_image_util_gtk.h',
'controls/menu/submenu_view.cc',
'controls/menu/submenu_view.h',
'controls/menu/view_menu_delegate.h',