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

Side by Side Diff: chrome/browser/ui/views/extensions/browser_action_overflow_menu_controller.cc

Issue 10533086: Action box menu (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Action box menu Created 8 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/ui/views/extensions/browser_action_overflow_menu_contro ller.h" 5 #include "chrome/browser/ui/views/extensions/browser_action_overflow_menu_contro ller.h"
6 6
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "base/utf_string_conversions.h" 8 #include "base/utf_string_conversions.h"
9 #include "chrome/browser/extensions/extension_context_menu_model.h" 9 #include "chrome/browser/extensions/extension_context_menu_model.h"
10 #include "chrome/browser/profiles/profile.h" 10 #include "chrome/browser/profiles/profile.h"
11 #include "chrome/browser/ui/browser_list.h" 11 #include "chrome/browser/ui/browser_list.h"
12 #include "chrome/browser/ui/views/browser_action_view.h" 12 #include "chrome/browser/ui/views/browser_action_view.h"
13 #include "chrome/browser/ui/views/browser_actions_container.h" 13 #include "chrome/browser/ui/views/browser_actions_container.h"
14 #include "chrome/browser/ui/views/extensions/browser_action_drag_data.h" 14 #include "chrome/browser/ui/views/extensions/browser_action_drag_data.h"
15 #include "chrome/common/extensions/extension.h" 15 #include "chrome/common/extensions/extension.h"
16 #include "chrome/common/extensions/extension_action.h" 16 #include "chrome/common/extensions/extension_action.h"
17 #include "ui/gfx/canvas.h" 17 #include "ui/gfx/canvas.h"
18 #include "ui/views/controls/menu/menu_item_view.h" 18 #include "ui/views/controls/menu/menu_item_view.h"
19 #include "ui/views/controls/menu/menu_model_adapter.h" 19 #include "ui/views/controls/menu/menu_model_adapter.h"
20 #include "ui/views/controls/menu/menu_runner.h" 20 #include "ui/views/controls/menu/menu_runner.h"
21 #include "ui/views/controls/menu/submenu_view.h" 21 #include "ui/views/controls/menu/submenu_view.h"
22 #include "ui/views/widget/widget.h" 22 #include "ui/views/widget/widget.h"
23 23
24 BrowserActionOverflowMenuController::BrowserActionOverflowMenuController( 24 BrowserActionOverflowMenuController::BrowserActionOverflowMenuController(
25 BrowserActionsContainer* owner, 25 BrowserActionsContainer* owner,
26 Browser* browser,
26 views::MenuButton* menu_button, 27 views::MenuButton* menu_button,
27 const std::vector<BrowserActionView*>& views, 28 const std::vector<BrowserActionView*>& views,
28 int start_index) 29 int start_index)
29 : owner_(owner), 30 : owner_(owner),
31 browser_(browser),
30 observer_(NULL), 32 observer_(NULL),
31 menu_button_(menu_button), 33 menu_button_(menu_button),
32 menu_(NULL), 34 menu_(NULL),
33 views_(&views), 35 views_(&views),
34 start_index_(start_index), 36 start_index_(start_index),
35 for_drop_(false) { 37 for_drop_(false) {
36 menu_ = new views::MenuItemView(this); 38 menu_ = new views::MenuItemView(this);
37 menu_runner_.reset(new views::MenuRunner(menu_)); 39 menu_runner_.reset(new views::MenuRunner(menu_));
38 menu_->set_has_icons(true); 40 menu_->set_has_icons(true);
39 41
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 views::MenuItemView* source, 103 views::MenuItemView* source,
102 int id, 104 int id,
103 const gfx::Point& p, 105 const gfx::Point& p,
104 bool is_mouse_gesture) { 106 bool is_mouse_gesture) {
105 const extensions::Extension* extension = 107 const extensions::Extension* extension =
106 (*views_)[start_index_ + id - 1]->button()->extension(); 108 (*views_)[start_index_ + id - 1]->button()->extension();
107 if (!extension->ShowConfigureContextMenus()) 109 if (!extension->ShowConfigureContextMenus())
108 return false; 110 return false;
109 111
110 scoped_refptr<ExtensionContextMenuModel> context_menu_contents = 112 scoped_refptr<ExtensionContextMenuModel> context_menu_contents =
111 new ExtensionContextMenuModel(extension, owner_->browser()); 113 new ExtensionContextMenuModel(extension, browser_);
112 views::MenuModelAdapter context_menu_model_adapter( 114 views::MenuModelAdapter context_menu_model_adapter(
113 context_menu_contents.get()); 115 context_menu_contents.get());
114 views::MenuRunner context_menu_runner( 116 views::MenuRunner context_menu_runner(
115 context_menu_model_adapter.CreateMenu()); 117 context_menu_model_adapter.CreateMenu());
116 118
117 // We can ignore the result as we delete ourself. 119 // We can ignore the result as we delete ourself.
118 // This blocks until the user choses something or dismisses the menu. 120 // This blocks until the user choses something or dismisses the menu.
119 ignore_result(context_menu_runner.RunMenuAt(menu_button_->GetWidget(), 121 ignore_result(context_menu_runner.RunMenuAt(menu_button_->GetWidget(),
120 NULL, gfx::Rect(p, gfx::Size()), views::MenuItemView::TOPLEFT, 122 NULL, gfx::Rect(p, gfx::Size()), views::MenuItemView::TOPLEFT,
121 views::MenuRunner::HAS_MNEMONICS | views::MenuRunner::IS_NESTED)); 123 views::MenuRunner::HAS_MNEMONICS | views::MenuRunner::IS_NESTED));
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 220
219 BrowserActionView* BrowserActionOverflowMenuController::ViewForId( 221 BrowserActionView* BrowserActionOverflowMenuController::ViewForId(
220 int id, size_t* index) { 222 int id, size_t* index) {
221 // The index of the view being dragged (GetCommand gives a 1-based index into 223 // The index of the view being dragged (GetCommand gives a 1-based index into
222 // the overflow menu). 224 // the overflow menu).
223 size_t view_index = owner_->VisibleBrowserActions() + id - 1; 225 size_t view_index = owner_->VisibleBrowserActions() + id - 1;
224 if (index) 226 if (index)
225 *index = view_index; 227 *index = view_index;
226 return owner_->GetBrowserActionViewAt(view_index); 228 return owner_->GetBrowserActionViewAt(view_index);
227 } 229 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698