Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(148)

Side by Side Diff: chrome/browser/gtk/menu_gtk.cc

Issue 28105: Implement accelerators in the gtk port. (Closed)
Patch Set: Fixes for evanm Created 11 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/gtk/menu_gtk.h" 5 #include "chrome/browser/gtk/menu_gtk.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "chrome/common/l10n_util.h" 9 #include "chrome/common/l10n_util.h"
10 #include "skia/include/SkBitmap.h" 10 #include "skia/include/SkBitmap.h"
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 66
67 // Assume ownership of pixbuf. 67 // Assume ownership of pixbuf.
68 g_object_ref_sink(pixbuf); 68 g_object_ref_sink(pixbuf);
69 bitmap->unlockPixels(); 69 bitmap->unlockPixels();
70 return pixbuf; 70 return pixbuf;
71 } 71 }
72 72
73 } // namespace 73 } // namespace
74 74
75 MenuGtk::MenuGtk(MenuGtk::Delegate* delegate, 75 MenuGtk::MenuGtk(MenuGtk::Delegate* delegate,
76 const MenuCreateMaterial* menu_data) 76 const MenuCreateMaterial* menu_data,
77 GtkAccelGroup* accel_group)
77 : delegate_(delegate), 78 : delegate_(delegate),
79 accel_group_(accel_group),
78 menu_(gtk_menu_new()) { 80 menu_(gtk_menu_new()) {
79 g_object_ref_sink(menu_); 81 g_object_ref_sink(menu_);
80 BuildMenuIn(menu_, menu_data); 82 BuildMenuIn(menu_, menu_data);
81 } 83 }
82 84
83 MenuGtk::MenuGtk(MenuGtk::Delegate* delegate) 85 MenuGtk::MenuGtk(MenuGtk::Delegate* delegate)
84 : delegate_(delegate), 86 : delegate_(delegate),
85 menu_(gtk_menu_new()) { 87 menu_(gtk_menu_new()) {
86 g_object_ref_sink(menu_); 88 g_object_ref_sink(menu_);
87 BuildMenuFromDelegate(); 89 BuildMenuFromDelegate();
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 menu_item = gtk_menu_item_new_with_mnemonic(WideToUTF8(label).c_str()); 141 menu_item = gtk_menu_item_new_with_mnemonic(WideToUTF8(label).c_str());
140 break; 142 break;
141 } 143 }
142 144
143 if (menu_data->submenu) { 145 if (menu_data->submenu) {
144 GtkWidget* submenu = gtk_menu_new(); 146 GtkWidget* submenu = gtk_menu_new();
145 BuildMenuIn(submenu, menu_data->submenu); 147 BuildMenuIn(submenu, menu_data->submenu);
146 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item), submenu); 148 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item), submenu);
147 } 149 }
148 150
151 if (menu_data->accel_key) {
152 // If we ever want to let the user do any key remaping, we'll need to
153 // change the following so we make a gtk_accel_map which keeps the actual
154 // keys.
155 gtk_widget_add_accelerator(menu_item,
156 "activate",
157 accel_group_,
158 menu_data->accel_key,
159 GdkModifierType(menu_data->accel_modifiers),
160 GTK_ACCEL_VISIBLE);
161 }
162
149 g_object_set_data(G_OBJECT(menu_item), "menu-data", 163 g_object_set_data(G_OBJECT(menu_item), "menu-data",
150 const_cast<MenuCreateMaterial*>(menu_data)); 164 const_cast<MenuCreateMaterial*>(menu_data));
151 165
152 g_signal_connect(G_OBJECT(menu_item), "activate", 166 g_signal_connect(G_OBJECT(menu_item), "activate",
153 G_CALLBACK(OnMenuItemActivated), this); 167 G_CALLBACK(OnMenuItemActivated), this);
154 168
155 gtk_widget_show(menu_item); 169 gtk_widget_show(menu_item);
156 gtk_menu_append(menu, menu_item); 170 gtk_menu_append(menu, menu_item);
157 } 171 }
158 } 172 }
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 widget, menu->delegate_->IsCommandEnabled(data->id)); 282 widget, menu->delegate_->IsCommandEnabled(data->id));
269 283
270 GtkWidget* submenu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(widget)); 284 GtkWidget* submenu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(widget));
271 if (submenu) { 285 if (submenu) {
272 gtk_container_foreach(GTK_CONTAINER(submenu), &MenuGtk::SetMenuItemInfo, 286 gtk_container_foreach(GTK_CONTAINER(submenu), &MenuGtk::SetMenuItemInfo,
273 raw_menu); 287 raw_menu);
274 } 288 }
275 } 289 }
276 } 290 }
277 } 291 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698