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

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

Issue 3143046: The "Update Chrome" menu item should appear in addition to the About menu. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: estade fixes -> final try Created 10 years, 3 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
« no previous file with comments | « chrome/browser/gtk/menu_gtk.h ('k') | chrome/browser/wrench_menu_model.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 <map> 7 #include <map>
8 8
9 #include "app/menus/accelerator_gtk.h" 9 #include "app/menus/accelerator_gtk.h"
10 #include "app/menus/button_menu_item_model.h" 10 #include "app/menus/button_menu_item_model.h"
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 } 207 }
208 208
209 GtkWidget* MenuGtk::AppendSeparator() { 209 GtkWidget* MenuGtk::AppendSeparator() {
210 GtkWidget* menu_item = gtk_separator_menu_item_new(); 210 GtkWidget* menu_item = gtk_separator_menu_item_new();
211 gtk_widget_show(menu_item); 211 gtk_widget_show(menu_item);
212 gtk_menu_shell_append(GTK_MENU_SHELL(menu_), menu_item); 212 gtk_menu_shell_append(GTK_MENU_SHELL(menu_), menu_item);
213 return menu_item; 213 return menu_item;
214 } 214 }
215 215
216 GtkWidget* MenuGtk::AppendMenuItem(int command_id, GtkWidget* menu_item) { 216 GtkWidget* MenuGtk::AppendMenuItem(int command_id, GtkWidget* menu_item) {
217 return AppendMenuItemToMenu(command_id, menu_item, menu_, true); 217 return AppendMenuItemToMenu(command_id, NULL, menu_item, menu_, true);
218 } 218 }
219 219
220 GtkWidget* MenuGtk::AppendMenuItemToMenu(int command_id, 220 GtkWidget* MenuGtk::AppendMenuItemToMenu(int index,
221 menus::MenuModel* model,
221 GtkWidget* menu_item, 222 GtkWidget* menu_item,
222 GtkWidget* menu, 223 GtkWidget* menu,
223 bool connect_to_activate) { 224 bool connect_to_activate) {
224 // Native menu items do their own thing, so only selectively listen for the 225 // Native menu items do their own thing, so only selectively listen for the
225 // activate signal. 226 // activate signal.
226 if (connect_to_activate) { 227 if (connect_to_activate) {
227 SetMenuItemID(menu_item, command_id); 228 SetMenuItemID(menu_item, index);
228 g_signal_connect(menu_item, "activate", 229 g_signal_connect(menu_item, "activate",
229 G_CALLBACK(OnMenuItemActivated), this); 230 G_CALLBACK(OnMenuItemActivated), this);
230 } 231 }
231 232
232 gtk_widget_show(menu_item); 233 // AppendMenuItemToMenu is used both internally when we control menu creation
234 // from a model (where the model can choose to hide certain menu items), and
235 // with immediate commands which don't provide the option.
236 if (model) {
237 if (model->IsVisibleAt(index))
238 gtk_widget_show(menu_item);
239 } else {
240 gtk_widget_show(menu_item);
241 }
233 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item); 242 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
234 return menu_item; 243 return menu_item;
235 } 244 }
236 245
237 void MenuGtk::Popup(GtkWidget* widget, GdkEvent* event) { 246 void MenuGtk::Popup(GtkWidget* widget, GdkEvent* event) {
238 DCHECK(event->type == GDK_BUTTON_PRESS) 247 DCHECK(event->type == GDK_BUTTON_PRESS)
239 << "Non-button press event sent to RunMenuAt"; 248 << "Non-button press event sent to RunMenuAt";
240 249
241 Popup(widget, event->button.button, event->button.time); 250 Popup(widget, event->button.button, event->button.time);
242 } 251 }
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 if (model->GetAcceleratorAt(i, &accelerator)) { 363 if (model->GetAcceleratorAt(i, &accelerator)) {
355 gtk_widget_add_accelerator(menu_item, 364 gtk_widget_add_accelerator(menu_item,
356 "activate", 365 "activate",
357 dummy_accel_group_, 366 dummy_accel_group_,
358 accelerator.GetGdkKeyCode(), 367 accelerator.GetGdkKeyCode(),
359 accelerator.gdk_modifier_type(), 368 accelerator.gdk_modifier_type(),
360 GTK_ACCEL_VISIBLE); 369 GTK_ACCEL_VISIBLE);
361 } 370 }
362 371
363 g_object_set_data(G_OBJECT(menu_item), "model", model); 372 g_object_set_data(G_OBJECT(menu_item), "model", model);
364 AppendMenuItemToMenu(i, menu_item, menu, connect_to_activate); 373 AppendMenuItemToMenu(i, model, menu_item, menu, connect_to_activate);
365 374
366 if (model->IsLabelDynamicAt(i)) { 375 if (model->IsLabelDynamicAt(i)) {
367 g_signal_connect(menu, "show", G_CALLBACK(OnSubmenuShow), 376 g_signal_connect(menu, "show", G_CALLBACK(OnSubmenuShow),
368 GINT_TO_POINTER(i)); 377 GINT_TO_POINTER(i));
369 } 378 }
370 379
371 menu_item = NULL; 380 menu_item = NULL;
372 } 381 }
373 } 382 }
374 383
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
596 // root of the MenuGtk and we want to disable *all* MenuGtks, including 605 // root of the MenuGtk and we want to disable *all* MenuGtks, including
597 // submenus. 606 // submenus.
598 block_activation_ = true; 607 block_activation_ = true;
599 gtk_check_menu_item_set_active(item, model->IsItemCheckedAt(id)); 608 gtk_check_menu_item_set_active(item, model->IsItemCheckedAt(id));
600 block_activation_ = false; 609 block_activation_ = false;
601 } 610 }
602 611
603 if (GTK_IS_MENU_ITEM(widget)) { 612 if (GTK_IS_MENU_ITEM(widget)) {
604 gtk_widget_set_sensitive(widget, model->IsEnabledAt(id)); 613 gtk_widget_set_sensitive(widget, model->IsEnabledAt(id));
605 614
615 if (model->IsVisibleAt(id))
616 gtk_widget_show(widget);
617 else
618 gtk_widget_hide(widget);
619
606 GtkWidget* submenu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(widget)); 620 GtkWidget* submenu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(widget));
607 if (submenu) { 621 if (submenu) {
608 gtk_container_foreach(GTK_CONTAINER(submenu), &SetMenuItemInfo, 622 gtk_container_foreach(GTK_CONTAINER(submenu), &SetMenuItemInfo,
609 userdata); 623 userdata);
610 } 624 }
611 } 625 }
612 } 626 }
OLDNEW
« no previous file with comments | « chrome/browser/gtk/menu_gtk.h ('k') | chrome/browser/wrench_menu_model.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698