diff options
author | oshima@google.com <oshima@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-09 20:00:50 +0000 |
---|---|---|
committer | oshima@google.com <oshima@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-09 20:00:50 +0000 |
commit | 113e9591a8e04dfd0f69ada6a6955de9ccab23e5 (patch) | |
tree | 56089c877b8fa2dafd6d1e5929e4d749f2697118 /views | |
parent | 1071e57b86dc2cca01a4fe980a1517bbe7e166e9 (diff) | |
download | chromium_src-113e9591a8e04dfd0f69ada6a6955de9ccab23e5.zip chromium_src-113e9591a8e04dfd0f69ada6a6955de9ccab23e5.tar.gz chromium_src-113e9591a8e04dfd0f69ada6a6955de9ccab23e5.tar.bz2 |
Fix submenu arrow position for RTL
Flip the direction of submenu arrow for RTL
BUG=chromium-os:5593
TEST=none
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=74171
Review URL: http://codereview.chromium.org/6428001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74324 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views')
-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.cc | 20 | ||||
-rw-r--r-- | views/views.gyp | 4 |
4 files changed, 44 insertions, 17 deletions
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', |