diff options
author | erg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-07 21:24:30 +0000 |
---|---|---|
committer | erg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-07 21:24:30 +0000 |
commit | 1f1a29aac426314e525b15ae859ebccf094410cf (patch) | |
tree | 1b731ac708c09f365d660c7d17a8b18511ae4f02 /chrome | |
parent | ea7e495adf156b79afb6339ef778c3509bb64315 (diff) | |
download | chromium_src-1f1a29aac426314e525b15ae859ebccf094410cf.zip chromium_src-1f1a29aac426314e525b15ae859ebccf094410cf.tar.gz chromium_src-1f1a29aac426314e525b15ae859ebccf094410cf.tar.bz2 |
Implement the "(empty)" disabled item placed in empty bookmark menus.
(As a side effect, this patch also fixes disabled items in the rest
of the bookmarks bar.)
Review URL: http://codereview.chromium.org/113119
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15582 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/bookmarks/bookmark_menu_controller_gtk.cc | 12 | ||||
-rw-r--r-- | chrome/browser/gtk/menu_gtk.cc | 34 |
2 files changed, 30 insertions, 16 deletions
diff --git a/chrome/browser/bookmarks/bookmark_menu_controller_gtk.cc b/chrome/browser/bookmarks/bookmark_menu_controller_gtk.cc index ffc3953..293dab2 100644 --- a/chrome/browser/bookmarks/bookmark_menu_controller_gtk.cc +++ b/chrome/browser/bookmarks/bookmark_menu_controller_gtk.cc @@ -4,11 +4,13 @@ #include "chrome/browser/bookmarks/bookmark_menu_controller_gtk.h" +#include "app/l10n_util.h" +#include "app/resource_bundle.h" #include "base/string_util.h" #include "chrome/browser/bookmarks/bookmark_context_menu.h" #include "chrome/browser/profile.h" #include "chrome/browser/tab_contents/page_navigator.h" -#include "app/resource_bundle.h" +#include "grit/generated_resources.h" #include "grit/theme_resources.h" #include "webkit/glue/window_open_disposition.h" @@ -50,7 +52,8 @@ void BookmarkMenuController::BookmarkNodeFavIconLoaded(BookmarkModel* model, } bool BookmarkMenuController::IsCommandEnabled(int id) const { - return true; + // -1 is reserved for empty. + return id != -1; } void BookmarkMenuController::ExecuteCommand(int id) { @@ -98,4 +101,9 @@ void BookmarkMenuController::BuildMenu(BookmarkNode* parent, } menu_id_to_node_map_[id] = node; } + + if (parent->GetChildCount() == 0) { + menu->AppendMenuItemWithLabel( + -1, l10n_util::GetStringUTF8(IDS_MENU_EMPTY_SUBMENU)); + } } diff --git a/chrome/browser/gtk/menu_gtk.cc b/chrome/browser/gtk/menu_gtk.cc index 6d12f26..b6df673 100644 --- a/chrome/browser/gtk/menu_gtk.cc +++ b/chrome/browser/gtk/menu_gtk.cc @@ -342,26 +342,32 @@ void MenuGtk::MenuPositionFunc(GtkMenu* menu, // static void MenuGtk::SetMenuItemInfo(GtkWidget* widget, gpointer userdata) { MenuGtk* menu = reinterpret_cast<MenuGtk*>(userdata); + int id; + const MenuCreateMaterial* data = reinterpret_cast<const MenuCreateMaterial*>( g_object_get_data(G_OBJECT(widget), "menu-data")); - if (data) { - if (GTK_IS_CHECK_MENU_ITEM(widget)) { - GtkCheckMenuItem* item = GTK_CHECK_MENU_ITEM(widget); - gtk_check_menu_item_set_active( - item, menu->delegate_->IsItemChecked(data->id)); - } + id = data->id; + } else { + id = reinterpret_cast<int>( + g_object_get_data(G_OBJECT(widget), "menu-id")); + } + + if (GTK_IS_CHECK_MENU_ITEM(widget)) { + GtkCheckMenuItem* item = GTK_CHECK_MENU_ITEM(widget); + gtk_check_menu_item_set_active( + item, menu->delegate_->IsItemChecked(id)); + } - if (GTK_IS_MENU_ITEM(widget)) { - gtk_widget_set_sensitive( - widget, menu->delegate_->IsCommandEnabled(data->id)); + if (GTK_IS_MENU_ITEM(widget)) { + gtk_widget_set_sensitive( + widget, menu->delegate_->IsCommandEnabled(id)); - GtkWidget* submenu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(widget)); - if (submenu) { - gtk_container_foreach(GTK_CONTAINER(submenu), &SetMenuItemInfo, - userdata); - } + GtkWidget* submenu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(widget)); + if (submenu) { + gtk_container_foreach(GTK_CONTAINER(submenu), &SetMenuItemInfo, + userdata); } } } |