summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk/menu_gtk.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/gtk/menu_gtk.cc')
-rw-r--r--chrome/browser/gtk/menu_gtk.cc49
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,