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