OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |