diff options
author | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-01 20:14:50 +0000 |
---|---|---|
committer | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-01 20:14:50 +0000 |
commit | 0ea548267d30b10c6d7f899573eb37b793c1b346 (patch) | |
tree | dddce09315c6010d047dda6ec9c29d6aa5befc36 /gfx | |
parent | a0c4b343dfa64780f7395d7e3a6e8ebe853a5ec3 (diff) | |
download | chromium_src-0ea548267d30b10c6d7f899573eb37b793c1b346.zip chromium_src-0ea548267d30b10c6d7f899573eb37b793c1b346.tar.gz chromium_src-0ea548267d30b10c6d7f899573eb37b793c1b346.tar.bz2 |
Moves gtk accelerator processing functions to base/gtk_util so I can
use them from views and gfx.
Sorry for the new patch on this and not an update. Not sure what happened.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/2809047
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@51409 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gfx')
-rw-r--r-- | gfx/canvas_skia_linux.cc | 33 |
1 files changed, 2 insertions, 31 deletions
diff --git a/gfx/canvas_skia_linux.cc b/gfx/canvas_skia_linux.cc index 7c8c6c7..d63f9b4 100644 --- a/gfx/canvas_skia_linux.cc +++ b/gfx/canvas_skia_linux.cc @@ -10,6 +10,7 @@ #include <pango/pangocairo.h> #include "base/logging.h" +#include "base/gtk_util.h" #include "base/utf_string_conversions.h" #include "gfx/font.h" #include "gfx/gtk_util.h" @@ -87,36 +88,6 @@ static void UpdateCairoFontOptions() { g_free(rgba_style); } -// TODO(sky): this is a copy of the one in gtk_util. It needs to be moved to a -// common place. -// Common implementation of ConvertAcceleratorsFromWindowsStyle() and -// RemoveWindowsStyleAccelerators(). -// Replaces all ampersands (as used in our grd files to indicate mnemonics) -// to |target|. Similarly any underscores get replaced with two underscores as -// is needed by pango. -std::string ConvertAmperstandsTo(const std::string& label, - const std::string& target) { - std::string ret; - ret.reserve(label.length() * 2); - for (size_t i = 0; i < label.length(); ++i) { - if ('_' == label[i]) { - ret.push_back('_'); - ret.push_back('_'); - } else if ('&' == label[i]) { - if (i + 1 < label.length() && '&' == label[i + 1]) { - ret.push_back('&'); - ++i; - } else { - ret.append(target); - } - } else { - ret.push_back(label[i]); - } - } - - return ret; -} - } // namespace namespace gfx { @@ -194,7 +165,7 @@ static void SetupPangoLayout(PangoLayout* layout, g_free(escaped_text); } else if (flags & gfx::Canvas::HIDE_PREFIX) { // Remove the ampersand character. - utf8 = ConvertAmperstandsTo(utf8, ""); + utf8 = gtk_util::RemoveWindowsStyleAccelerators(utf8); pango_layout_set_text(layout, utf8.data(), utf8.size()); } else { pango_layout_set_text(layout, utf8.data(), utf8.size()); |