diff options
Diffstat (limited to 'chrome/browser/gtk/menu_gtk.cc')
-rw-r--r-- | chrome/browser/gtk/menu_gtk.cc | 49 |
1 files changed, 23 insertions, 26 deletions
diff --git a/chrome/browser/gtk/menu_gtk.cc b/chrome/browser/gtk/menu_gtk.cc index 059755a..0b2bda0 100644 --- a/chrome/browser/gtk/menu_gtk.cc +++ b/chrome/browser/gtk/menu_gtk.cc @@ -4,36 +4,12 @@ #include "chrome/browser/gtk/menu_gtk.h" -#include "base/gfx/gtk_util.h" #include "base/logging.h" #include "base/string_util.h" +#include "chrome/common/gtk_util.h" #include "chrome/common/l10n_util.h" #include "skia/include/SkBitmap.h" -namespace { - -// GTK uses _ for accelerators. Windows uses & with && as an escape for &. -std::string ConvertAcceleratorsFromWindowsStyle(const std::string& label) { - std::string ret; - ret.reserve(label.length()); - for (size_t i = 0; i < label.length(); ++i) { - if ('&' == label[i]) { - if (i + 1 < label.length() && '&' == label[i + 1]) { - ret.push_back(label[i]); - ++i; - } else { - ret.push_back('_'); - } - } else { - ret.push_back(label[i]); - } - } - - return ret; -} - -} // namespace - MenuGtk::MenuGtk(MenuGtk::Delegate* delegate, const MenuCreateMaterial* menu_data, GtkAccelGroup* accel_group) @@ -103,7 +79,28 @@ void MenuGtk::PopupAsContext(guint32 event_time) { } void MenuGtk::Cancel() { - gtk_menu_detach(GTK_MENU(menu_.get())); + gtk_menu_popdown(GTK_MENU(menu_.get())); +} + +// static +std::string MenuGtk::ConvertAcceleratorsFromWindowsStyle( + const std::string& label) { + std::string ret; + ret.reserve(label.length()); + for (size_t i = 0; i < label.length(); ++i) { + if ('&' == label[i]) { + if (i + 1 < label.length() && '&' == label[i + 1]) { + ret.push_back(label[i]); + ++i; + } else { + ret.push_back('_'); + } + } else { + ret.push_back(label[i]); + } + } + + return ret; } void MenuGtk::BuildMenuIn(GtkWidget* menu, |