diff options
author | erg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-06 22:03:00 +0000 |
---|---|---|
committer | erg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-06 22:03:00 +0000 |
commit | 29cc841ee15bbb8b31baf7ece0b2a3e2d3b55b5c (patch) | |
tree | 6cc5dd709d48346ba0c6669f67263cbc714fbc9d /chrome | |
parent | 901065b013787109038f232c0707b245af796599 (diff) | |
download | chromium_src-29cc841ee15bbb8b31baf7ece0b2a3e2d3b55b5c.zip chromium_src-29cc841ee15bbb8b31baf7ece0b2a3e2d3b55b5c.tar.gz chromium_src-29cc841ee15bbb8b31baf7ece0b2a3e2d3b55b5c.tar.bz2 |
Clicking on a folder in the bookmark bar now shows its contents as a menu.
http://crbug.com/11250
Review URL: http://codereview.chromium.org/114005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15463 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/bookmarks/bookmark_menu_controller_gtk.cc | 107 | ||||
-rw-r--r-- | chrome/browser/bookmarks/bookmark_menu_controller_gtk.h | 79 | ||||
-rw-r--r-- | chrome/browser/bookmarks/bookmark_menu_controller_win.cc (renamed from chrome/browser/bookmarks/bookmark_menu_controller.cc) | 2 | ||||
-rw-r--r-- | chrome/browser/bookmarks/bookmark_menu_controller_win.h (renamed from chrome/browser/bookmarks/bookmark_menu_controller.h) | 6 | ||||
-rw-r--r-- | chrome/browser/browser.vcproj | 4 | ||||
-rw-r--r-- | chrome/browser/gtk/bookmark_bar_gtk.cc | 12 | ||||
-rw-r--r-- | chrome/browser/gtk/bookmark_bar_gtk.h | 5 | ||||
-rw-r--r-- | chrome/browser/gtk/menu_gtk.cc | 108 | ||||
-rw-r--r-- | chrome/browser/gtk/menu_gtk.h | 22 | ||||
-rw-r--r-- | chrome/browser/views/bookmark_bar_view.h | 2 | ||||
-rw-r--r-- | chrome/browser/views/bookmark_menu_button.h | 2 | ||||
-rw-r--r-- | chrome/chrome.gyp | 6 |
12 files changed, 325 insertions, 30 deletions
diff --git a/chrome/browser/bookmarks/bookmark_menu_controller_gtk.cc b/chrome/browser/bookmarks/bookmark_menu_controller_gtk.cc new file mode 100644 index 0000000..f94ba58 --- /dev/null +++ b/chrome/browser/bookmarks/bookmark_menu_controller_gtk.cc @@ -0,0 +1,107 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/bookmarks/bookmark_menu_controller_gtk.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/theme_resources.h" +#include "webkit/glue/window_open_disposition.h" + +BookmarkMenuController::BookmarkMenuController(Browser* browser, + Profile* profile, + PageNavigator* navigator, + GtkWindow* window, + BookmarkNode* node, + int start_child_index, + bool show_other_folder) + : browser_(browser), + profile_(profile), + page_navigator_(navigator), + parent_window_(window), + node_(node) { + menu_.reset(new MenuGtk(this, false)); + int next_menu_id = 1; + BuildMenu(node, start_child_index, menu_.get(), &next_menu_id); + + // TODO(erg): Add the BuildOtherFolderMenu() to handle the overflow case from + // the chevron on the bookmark bar. + // + // if (show_other_folder) + // BuildOtherFolderMenu(&next_menu_id); +} + +BookmarkMenuController::~BookmarkMenuController() { + profile_->GetBookmarkModel()->RemoveObserver(this); +} + +void BookmarkMenuController::Popup(GtkWidget* widget, gint button_type, + guint32 timestamp) { + profile_->GetBookmarkModel()->AddObserver(this); + menu_->Popup(widget, button_type, timestamp); +} + +void BookmarkMenuController::BookmarkModelChanged() { + menu_->Cancel(); +} + +void BookmarkMenuController::BookmarkNodeFavIconLoaded(BookmarkModel* model, + BookmarkNode* node) { + if (node_to_menu_id_map_.find(node) != node_to_menu_id_map_.end()) + menu_->SetIcon(node->GetFavIcon(), node_to_menu_id_map_[node]); +} + +bool BookmarkMenuController::IsCommandEnabled(int id) const { + return true; +} + +void BookmarkMenuController::ExecuteCommand(int id) { + DCHECK(page_navigator_); + DCHECK(menu_id_to_node_map_.find(id) != menu_id_to_node_map_.end()); + GURL url = menu_id_to_node_map_[id]->GetURL(); + page_navigator_->OpenURL( + url, GURL(), + // TODO(erg): Plumb mouse events here so things like shift-click or + // ctrl-click do the right things. + // + // event_utils::DispositionFromEventFlags(mouse_event_flags), + CURRENT_TAB, + PageTransition::AUTO_BOOKMARK); +} + +void BookmarkMenuController::BuildMenu(BookmarkNode* parent, + int start_child_index, + MenuGtk* menu, + int* next_menu_id) { + DCHECK(!parent->GetChildCount() || + start_child_index < parent->GetChildCount()); + for (int i = start_child_index; i < parent->GetChildCount(); ++i) { + BookmarkNode* node = parent->GetChild(i); + int id = *next_menu_id; + + (*next_menu_id)++; + if (node->is_url()) { + SkBitmap icon = node->GetFavIcon(); + if (icon.width() == 0) { + icon = *ResourceBundle::GetSharedInstance(). + GetBitmapNamed(IDR_DEFAULT_FAVICON); + } + menu->AppendMenuItemWithIcon(id, WideToUTF8(node->GetTitle()), icon); + node_to_menu_id_map_[node] = id; + } else if (node->is_folder()) { + SkBitmap* folder_icon = ResourceBundle::GetSharedInstance(). + GetBitmapNamed(IDR_BOOKMARK_BAR_FOLDER); + MenuGtk* submenu = + menu->AppendSubMenuWithIcon(id, WideToUTF8(node->GetTitle()), + *folder_icon); + BuildMenu(node, 0, submenu, next_menu_id); + } else { + NOTREACHED(); + } + menu_id_to_node_map_[id] = node; + } +} diff --git a/chrome/browser/bookmarks/bookmark_menu_controller_gtk.h b/chrome/browser/bookmarks/bookmark_menu_controller_gtk.h new file mode 100644 index 0000000..b7914c3 --- /dev/null +++ b/chrome/browser/bookmarks/bookmark_menu_controller_gtk.h @@ -0,0 +1,79 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_BOOKMARKS_BOOKMARK_MENU_CONTROLLER_GTK_H_ +#define CHROME_BROWSER_BOOKMARKS_BOOKMARK_MENU_CONTROLLER_GTK_H_ + +#include <map> + +#include "base/scoped_ptr.h" +#include "chrome/browser/bookmarks/base_bookmark_model_observer.h" +#include "chrome/browser/gtk/menu_gtk.h" + +class BookmarkContextMenu; +class Browser; +class Profiler; +class PageNavigator; +class BookmarkModel; +class BookmarkNode; + +typedef struct _GtkWidget GtkWidget; + +class BookmarkMenuController : public BaseBookmarkModelObserver, + public MenuGtk::Delegate { + public: + // Creates a BookmarkMenuController showing the children of |node| starting + // at index |start_child_index|. + BookmarkMenuController(Browser* browser, + Profile* profile, + PageNavigator* page_navigator, + GtkWindow* window, + BookmarkNode* node, + int start_child_index, + bool show_other_folder); + virtual ~BookmarkMenuController(); + + void Popup(GtkWidget* widget, gint button_type, guint32 timestamp); + + // Overridden from BaseBookmarkModelObserver: + virtual void BookmarkModelChanged(); + virtual void BookmarkNodeFavIconLoaded(BookmarkModel* model, + BookmarkNode* node); + + // Overridden from MenuGtk::Delegate: + virtual bool IsCommandEnabled(int id) const; + virtual void ExecuteCommand(int id); + + private: + void BuildMenu(BookmarkNode* parent, + int start_child_index, + MenuGtk* menu, + int* next_menu_id); + + Browser* browser_; + Profile* profile_; + PageNavigator* page_navigator_; + + // Parent window of this menu. + GtkWindow* parent_window_; + + // The node we're showing the contents of. + BookmarkNode* node_; + + scoped_ptr<MenuGtk> menu_; + + // Maps from menu id to BookmarkNode. + std::map<int, BookmarkNode*> menu_id_to_node_map_; + + // Mapping from node to menu id. This only contains entries for nodes of type + // URL. + std::map<BookmarkNode*, int> node_to_menu_id_map_; + + // Used when a context menu is shown. + scoped_ptr<BookmarkContextMenu> context_menu_; + + DISALLOW_COPY_AND_ASSIGN(BookmarkMenuController); +}; + +#endif // CHROME_BROWSER_BOOKMARKS_BOOKMARK_MENU_CONTROLLER_GTK_H_ diff --git a/chrome/browser/bookmarks/bookmark_menu_controller.cc b/chrome/browser/bookmarks/bookmark_menu_controller_win.cc index 7f90a52..f02ff7e 100644 --- a/chrome/browser/bookmarks/bookmark_menu_controller.cc +++ b/chrome/browser/bookmarks/bookmark_menu_controller_win.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/bookmarks/bookmark_menu_controller.h" +#include "chrome/browser/bookmarks/bookmark_menu_controller_win.h" #include "app/l10n_util.h" #include "app/os_exchange_data.h" diff --git a/chrome/browser/bookmarks/bookmark_menu_controller.h b/chrome/browser/bookmarks/bookmark_menu_controller_win.h index 96bce0e..1f83233 100644 --- a/chrome/browser/bookmarks/bookmark_menu_controller.h +++ b/chrome/browser/bookmarks/bookmark_menu_controller_win.h @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_BOOKMARKS_BOOKMARK_MENU_CONTROLLER_H_ -#define CHROME_BROWSER_BOOKMARKS_BOOKMARK_MENU_CONTROLLER_H_ +#ifndef CHROME_BROWSER_BOOKMARKS_BOOKMARK_MENU_CONTROLLER_WIN_H_ +#define CHROME_BROWSER_BOOKMARKS_BOOKMARK_MENU_CONTROLLER_WIN_H_ #include <map> @@ -142,4 +142,4 @@ class BookmarkMenuController : public BaseBookmarkModelObserver, DISALLOW_COPY_AND_ASSIGN(BookmarkMenuController); }; -#endif // CHROME_BROWSER_BOOKMARKS_BOOKMARK_MENU_CONTROLLER_H_ +#endif // CHROME_BROWSER_BOOKMARKS_BOOKMARK_MENU_CONTROLLER_WIN_H_ diff --git a/chrome/browser/browser.vcproj b/chrome/browser/browser.vcproj index 997fdc0..879c790 100644 --- a/chrome/browser/browser.vcproj +++ b/chrome/browser/browser.vcproj @@ -610,11 +610,11 @@ > </File> <File - RelativePath=".\bookmarks\bookmark_menu_controller.cc" + RelativePath=".\bookmarks\bookmark_menu_controller_win.cc" > </File> <File - RelativePath=".\bookmarks\bookmark_menu_controller.h" + RelativePath=".\bookmarks\bookmark_menu_controller_win.h" > </File> <File diff --git a/chrome/browser/gtk/bookmark_bar_gtk.cc b/chrome/browser/gtk/bookmark_bar_gtk.cc index 6c3d85f..9f4f0ce 100644 --- a/chrome/browser/gtk/bookmark_bar_gtk.cc +++ b/chrome/browser/gtk/bookmark_bar_gtk.cc @@ -8,6 +8,7 @@ #include "app/resource_bundle.h" #include "base/gfx/gtk_util.h" #include "chrome/browser/bookmarks/bookmark_context_menu.h" +#include "chrome/browser/bookmarks/bookmark_menu_controller_gtk.h" #include "chrome/browser/bookmarks/bookmark_utils.h" #include "chrome/browser/browser.h" #include "chrome/browser/gtk/custom_button.h" @@ -353,6 +354,8 @@ GtkWidget* BookmarkBarGtk::CreateBookmarkButton( GtkToolItem* BookmarkBarGtk::CreateBookmarkToolItem(BookmarkNode* node) { GtkWidget* button = CreateBookmarkButton(node); + g_object_set_data(G_OBJECT(button), "left-align-popup", + reinterpret_cast<void*>(true)); GtkToolItem* item = gtk_tool_item_new(); gtk_container_add(GTK_CONTAINER(item), button); @@ -537,7 +540,14 @@ gboolean BookmarkBarGtk::OnFolderButtonReleased(GtkWidget* sender, DCHECK(node); DCHECK(bar->page_navigator_); - NOTIMPLEMENTED() << "Flesh this out once I can make folders."; + bar->current_menu_.reset( + new BookmarkMenuController(bar->browser_, bar->profile_, + bar->page_navigator_, + GTK_WINDOW(gtk_widget_get_toplevel(sender)), + node, + 0, + false)); + bar->current_menu_->Popup(sender, event->button, event->time); // Allow other handlers to run so the button state is updated correctly. return FALSE; diff --git a/chrome/browser/gtk/bookmark_bar_gtk.h b/chrome/browser/gtk/bookmark_bar_gtk.h index 17f508f..8c02765 100644 --- a/chrome/browser/gtk/bookmark_bar_gtk.h +++ b/chrome/browser/gtk/bookmark_bar_gtk.h @@ -14,6 +14,7 @@ #include "chrome/browser/bookmarks/bookmark_model.h" class BookmarkContextMenu; +class BookmarkMenuController; class Browser; class CustomContainerButton; class PageNavigator; @@ -200,6 +201,10 @@ class BookmarkBarGtk : public BookmarkModelObserver { // The last displayed right click menu, or NULL if no menus have been // displayed yet. scoped_ptr<BookmarkContextMenu> current_context_menu_; + + // The last displayed left click menu, or NULL if no menus have been + // displayed yet. + scoped_ptr<BookmarkMenuController> current_menu_; }; #endif // CHROME_BROWSER_GTK_BOOKMARK_BAR_GTK_H_ diff --git a/chrome/browser/gtk/menu_gtk.cc b/chrome/browser/gtk/menu_gtk.cc index fd63e44..6d12f26 100644 --- a/chrome/browser/gtk/menu_gtk.cc +++ b/chrome/browser/gtk/menu_gtk.cc @@ -6,10 +6,36 @@ #include "app/l10n_util.h" #include "base/logging.h" +#include "base/stl_util-inl.h" #include "base/string_util.h" #include "chrome/common/gtk_util.h" #include "skia/include/SkBitmap.h" +namespace { + +struct SetIconState { + bool found; + const SkBitmap* icon; + int id; +}; + +void SetIconImpl(GtkWidget* widget, void* raw) { + SetIconState* data = reinterpret_cast<SetIconState*>(raw); + int this_id = + reinterpret_cast<int>(g_object_get_data(G_OBJECT(widget), "menu-id")); + + if (this_id == data->id) { + GdkPixbuf* pixbuf = gfx::GdkPixbufFromSkBitmap(data->icon); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget), + gtk_image_new_from_pixbuf(pixbuf)); + g_object_unref(pixbuf); + + data->found = true; + } +} + +} // namespace + MenuGtk::MenuGtk(MenuGtk::Delegate* delegate, const MenuCreateMaterial* menu_data, GtkAccelGroup* accel_group) @@ -28,6 +54,7 @@ MenuGtk::MenuGtk(MenuGtk::Delegate* delegate, bool load) } MenuGtk::~MenuGtk() { + STLDeleteElements(&children_); menu_.Destroy(); if (dummy_accel_group_) g_object_unref(dummy_accel_group_); @@ -36,15 +63,28 @@ MenuGtk::~MenuGtk() { void MenuGtk::AppendMenuItemWithLabel(int command_id, const std::string& label) { GtkWidget* menu_item = gtk_menu_item_new_with_label(label.c_str()); + AddMenuItemWithId(menu_item, command_id); +} - g_object_set_data(G_OBJECT(menu_item), "menu-id", - reinterpret_cast<void*>(command_id)); +void MenuGtk::AppendMenuItemWithIcon(int command_id, + const std::string& label, + const SkBitmap& icon) { + GtkWidget* menu_item = BuildMenuItemWithImage(label, icon); + AddMenuItemWithId(menu_item, command_id); +} - g_signal_connect(G_OBJECT(menu_item), "activate", - G_CALLBACK(OnMenuItemActivatedById), this); +MenuGtk* MenuGtk::AppendSubMenuWithIcon(int command_id, + const std::string& label, + const SkBitmap& icon) { + GtkWidget* menu_item = BuildMenuItemWithImage(label, icon); - gtk_widget_show(menu_item); - gtk_menu_shell_append(GTK_MENU_SHELL(menu_.get()), menu_item); + MenuGtk* submenu = new MenuGtk(delegate_, false); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item), submenu->menu_.get()); + children_.push_back(submenu); + + AddMenuItemWithId(menu_item, command_id); + + return submenu; } void MenuGtk::AppendSeparator() { @@ -82,6 +122,25 @@ void MenuGtk::Cancel() { gtk_menu_popdown(GTK_MENU(menu_.get())); } +bool MenuGtk::SetIcon(const SkBitmap& icon, int item_id) { + // First search items in this menu. + SetIconState state; + state.found = false; + state.icon = &icon; + state.id = item_id; + gtk_container_foreach(GTK_CONTAINER(menu_.get()), SetIconImpl, &state); + if (state.found) + return true; + + for (std::vector<MenuGtk*>::iterator it = children_.begin(); + it != children_.end(); ++it) { + if ((*it)->SetIcon(icon, item_id)) + return true; + } + + return false; +} + // static std::string MenuGtk::ConvertAcceleratorsFromWindowsStyle( const std::string& label) { @@ -178,6 +237,18 @@ void MenuGtk::BuildMenuIn(GtkWidget* menu, } } +GtkWidget* MenuGtk::BuildMenuItemWithImage(const std::string& label, + const SkBitmap& icon) { + GtkWidget* menu_item = gtk_image_menu_item_new_with_label(label.c_str()); + + GdkPixbuf* pixbuf = gfx::GdkPixbufFromSkBitmap(&icon); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item), + gtk_image_new_from_pixbuf(pixbuf)); + g_object_unref(pixbuf); + + return menu_item; +} + void MenuGtk::BuildMenuFromDelegate() { // Note that the menu IDs start at 1, not 0. for (int i = 1; i <= delegate_->GetItemCount(); ++i) { @@ -186,26 +257,25 @@ void MenuGtk::BuildMenuFromDelegate() { if (delegate_->IsItemSeparator(i)) { menu_item = gtk_separator_menu_item_new(); } else if (delegate_->HasIcon(i)) { - menu_item = gtk_image_menu_item_new_with_label( - delegate_->GetLabel(i).c_str()); const SkBitmap* icon = delegate_->GetIcon(i); - GdkPixbuf* pixbuf = gfx::GdkPixbufFromSkBitmap(icon); - GtkWidget* widget = gtk_image_new_from_pixbuf(pixbuf); - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item), widget); - g_object_unref(pixbuf); + menu_item = BuildMenuItemWithImage(delegate_->GetLabel(i), *icon); } else { menu_item = gtk_menu_item_new_with_label(delegate_->GetLabel(i).c_str()); } - g_object_set_data(G_OBJECT(menu_item), "menu-id", - reinterpret_cast<void*>(i)); + AddMenuItemWithId(menu_item, i); + } +} + +void MenuGtk::AddMenuItemWithId(GtkWidget* menu_item, int id) { + g_object_set_data(G_OBJECT(menu_item), "menu-id", + reinterpret_cast<void*>(id)); - g_signal_connect(G_OBJECT(menu_item), "activate", - G_CALLBACK(OnMenuItemActivatedById), this); + g_signal_connect(G_OBJECT(menu_item), "activate", + G_CALLBACK(OnMenuItemActivatedById), this); - gtk_widget_show(menu_item); - gtk_menu_shell_append(GTK_MENU_SHELL(menu_.get()), menu_item); - } + gtk_widget_show(menu_item); + gtk_menu_shell_append(GTK_MENU_SHELL(menu_.get()), menu_item); } // static diff --git a/chrome/browser/gtk/menu_gtk.h b/chrome/browser/gtk/menu_gtk.h index 371ed58..b7afd67 100644 --- a/chrome/browser/gtk/menu_gtk.h +++ b/chrome/browser/gtk/menu_gtk.h @@ -7,6 +7,7 @@ #include <gtk/gtk.h> #include <string> +#include <vector> #include "chrome/browser/gtk/standard_menus.h" #include "chrome/common/owned_widget_gtk.h" @@ -48,6 +49,10 @@ class MenuGtk { // These methods are used to build the menu dynamically. void AppendMenuItemWithLabel(int command_id, const std::string& label); + void AppendMenuItemWithIcon(int command_id, const std::string& label, + const SkBitmap& icon); + MenuGtk* AppendSubMenuWithIcon(int command_id, const std::string& label, + const SkBitmap& icon); void AppendSeparator(); // Displays the menu. |timestamp| is the time of activation. The popup is @@ -67,6 +72,11 @@ class MenuGtk { // Closes the menu. void Cancel(); + // Sets an icon for an item with a given item_id. This method searches both + // this MenuGtk object and all child submenus. Returns false if the item with + // |item_id| is not found. + bool SetIcon(const SkBitmap& icon, int item_id); + // Change windows accelerator style to GTK style. (GTK uses _ for // accelerators. Windows uses & with && as an escape for &.) static std::string ConvertAcceleratorsFromWindowsStyle( @@ -79,10 +89,18 @@ class MenuGtk { const MenuCreateMaterial* menu_data, GtkAccelGroup* accel_group); + // Builds a GtkImageMenuItem. + GtkWidget* BuildMenuItemWithImage(const std::string& label, + const SkBitmap& icon); + // A function that creates a GtkMenu from |delegate_|. This function is not // recursive and does not support sub-menus. void BuildMenuFromDelegate(); + // Helper method that sets properties on a GtkMenuItem and then adds it to + // our internal |menu_|. + void AddMenuItemWithId(GtkWidget* menu_item, int id); + // Callback for when a menu item is clicked. Used when the menu is created // via a MenuCreateMaterial. static void OnMenuItemActivated(GtkMenuItem* menuitem, MenuGtk* menu); @@ -116,6 +134,10 @@ class MenuGtk { // gtk_menu_popup() does not appear to take ownership of popup menus, so // MenuGtk explicitly manages the lifetime of the menu. OwnedWidgetGtk menu_; + + // MenuGtk instances of submenus; we keep references to these objects just to + // clean up during our destructor. + std::vector<MenuGtk*> children_; }; #endif // CHROME_BROWSER_GTK_MENU_GTK_H_ diff --git a/chrome/browser/views/bookmark_bar_view.h b/chrome/browser/views/bookmark_bar_view.h index a5d1a4b..a6c7ca8 100644 --- a/chrome/browser/views/bookmark_bar_view.h +++ b/chrome/browser/views/bookmark_bar_view.h @@ -7,7 +7,7 @@ #include "app/slide_animation.h" #include "chrome/browser/bookmarks/bookmark_drag_data.h" -#include "chrome/browser/bookmarks/bookmark_menu_controller.h" +#include "chrome/browser/bookmarks/bookmark_menu_controller_win.h" #include "chrome/browser/bookmarks/bookmark_model.h" #include "chrome/browser/extensions/extensions_service.h" #include "chrome/views/controls/button/menu_button.h" diff --git a/chrome/browser/views/bookmark_menu_button.h b/chrome/browser/views/bookmark_menu_button.h index e9da8d0..ed6dc5b 100644 --- a/chrome/browser/views/bookmark_menu_button.h +++ b/chrome/browser/views/bookmark_menu_button.h @@ -7,7 +7,7 @@ #include "base/timer.h" #include "chrome/browser/bookmarks/bookmark_drag_data.h" -#include "chrome/browser/bookmarks/bookmark_menu_controller.h" +#include "chrome/browser/bookmarks/bookmark_menu_controller_win.h" #include "chrome/views/controls/button/menu_button.h" #include "chrome/views/controls/menu/view_menu_delegate.h" diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp index 82ff2d0..273327f 100644 --- a/chrome/chrome.gyp +++ b/chrome/chrome.gyp @@ -577,8 +577,10 @@ 'browser/bookmarks/bookmark_folder_tree_model.h', 'browser/bookmarks/bookmark_html_writer.cc', 'browser/bookmarks/bookmark_html_writer.h', - 'browser/bookmarks/bookmark_menu_controller.cc', - 'browser/bookmarks/bookmark_menu_controller.h', + 'browser/bookmarks/bookmark_menu_controller_gtk.cc', + 'browser/bookmarks/bookmark_menu_controller_gtk.h', + 'browser/bookmarks/bookmark_menu_controller_win.cc', + 'browser/bookmarks/bookmark_menu_controller_win.h', 'browser/bookmarks/bookmark_model.cc', 'browser/bookmarks/bookmark_model.h', 'browser/bookmarks/bookmark_service.h', |