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

Side by Side Diff: chrome/browser/ui/views/action_box_menu.cc

Issue 16979002: Add ContextMenuSourceType to views::ContextMenuController::ShowContextMenuForView. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: patch Created 7 years, 6 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/action_box_menu.h" 5 #include "chrome/browser/ui/views/action_box_menu.h"
6 6
7 #include "chrome/browser/extensions/extension_icon_image.h" 7 #include "chrome/browser/extensions/extension_icon_image.h"
8 #include "chrome/browser/ui/browser.h" 8 #include "chrome/browser/ui/browser.h"
9 #include "chrome/browser/ui/toolbar/action_box_menu_model.h" 9 #include "chrome/browser/ui/toolbar/action_box_menu_model.h"
10 #include "chrome/browser/ui/views/action_box_context_menu.h" 10 #include "chrome/browser/ui/views/action_box_context_menu.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 gfx::Point menu_offset) { 64 gfx::Point menu_offset) {
65 views::View::ConvertPointToScreen(menu_button, &menu_offset); 65 views::View::ConvertPointToScreen(menu_button, &menu_offset);
66 menu_parent_ = menu_button->GetWidget(); 66 menu_parent_ = menu_button->GetWidget();
67 67
68 // Ignore the result since we don't need to handle a deleted menu specially. 68 // Ignore the result since we don't need to handle a deleted menu specially.
69 ignore_result( 69 ignore_result(
70 menu_runner_->RunMenuAt(menu_parent_, 70 menu_runner_->RunMenuAt(menu_parent_,
71 menu_button, 71 menu_button,
72 gfx::Rect(menu_offset, menu_button->size()), 72 gfx::Rect(menu_offset, menu_button->size()),
73 views::MenuItemView::TOPRIGHT, 73 views::MenuItemView::TOPRIGHT,
74 ui::MENU_SOURCE_NONE,
74 views::MenuRunner::HAS_MNEMONICS)); 75 views::MenuRunner::HAS_MNEMONICS));
75 } 76 }
76 77
77 ActionBoxMenu::ActionBoxMenu(Browser* browser, 78 ActionBoxMenu::ActionBoxMenu(Browser* browser,
78 scoped_ptr<ActionBoxMenuModel> model) 79 scoped_ptr<ActionBoxMenuModel> model)
79 : browser_(browser), 80 : browser_(browser),
80 menu_parent_(NULL), 81 menu_parent_(NULL),
81 model_(model.Pass()) { 82 model_(model.Pass()) {
82 views::MenuItemView* menu = new views::MenuItemView(this); 83 views::MenuItemView* menu = new views::MenuItemView(this);
83 menu->set_has_icons(true); 84 menu->set_has_icons(true);
84 85
85 menu_runner_.reset(new views::MenuRunner(menu)); 86 menu_runner_.reset(new views::MenuRunner(menu));
86 } 87 }
87 88
88 void ActionBoxMenu::ExecuteCommand(int id) { 89 void ActionBoxMenu::ExecuteCommand(int id) {
89 model_->ExecuteCommand(id); 90 model_->ExecuteCommand(id);
90 } 91 }
91 92
92 bool ActionBoxMenu::ShowContextMenu(views::MenuItemView* source, 93 bool ActionBoxMenu::ShowContextMenu(views::MenuItemView* source,
93 int id, 94 int id,
94 const gfx::Point& p, 95 const gfx::Point& p,
95 bool is_mouse_gesture) { 96 ui::MenuSourceType source_type) {
96 DCHECK(menu_parent_); 97 DCHECK(menu_parent_);
97 98
98 int index = model_->GetIndexOfCommandId(id); 99 int index = model_->GetIndexOfCommandId(id);
99 if (!model_->IsItemExtension(index)) 100 if (!model_->IsItemExtension(index))
100 return false; 101 return false;
101 102
102 context_menu_.reset( 103 context_menu_.reset(
103 new ActionBoxContextMenu(browser_, model_->GetExtensionAt(index))); 104 new ActionBoxContextMenu(browser_, model_->GetExtensionAt(index)));
104 if (context_menu_->RunMenuAt(p, menu_parent_) == 105 if (context_menu_->RunMenuAt(p, menu_parent_, source_type) ==
105 views::MenuRunner::MENU_DELETED) 106 views::MenuRunner::MENU_DELETED)
106 return true; 107 return true;
107 context_menu_.reset(); 108 context_menu_.reset();
108 return true; 109 return true;
109 } 110 }
110 111
111 void ActionBoxMenu::PopulateMenu() { 112 void ActionBoxMenu::PopulateMenu() {
112 for (int model_index = 0; model_index < model_->GetItemCount(); 113 for (int model_index = 0; model_index < model_->GetItemCount();
113 ++model_index) { 114 ++model_index) {
114 views::MenuItemView* menu_item = 115 views::MenuItemView* menu_item =
115 menu_runner_->GetMenu()->AppendMenuItemFromModel( 116 menu_runner_->GetMenu()->AppendMenuItemFromModel(
116 model_.get(), model_index, model_->GetCommandIdAt(model_index)); 117 model_.get(), model_index, model_->GetCommandIdAt(model_index));
117 if (model_->GetTypeAt(model_index) == ui::MenuModel::TYPE_COMMAND) { 118 if (model_->GetTypeAt(model_index) == ui::MenuModel::TYPE_COMMAND) {
118 if (model_->IsItemExtension(model_index)) { 119 if (model_->IsItemExtension(model_index)) {
119 const Extension* extension = model_->GetExtensionAt(model_index); 120 const Extension* extension = model_->GetExtensionAt(model_index);
120 ExtensionImageView* view = new ExtensionImageView(browser_->profile(), 121 ExtensionImageView* view = new ExtensionImageView(browser_->profile(),
121 extension); 122 extension);
122 // |menu_item| will own the |view| from now on. 123 // |menu_item| will own the |view| from now on.
123 menu_item->SetIconView(view); 124 menu_item->SetIconView(view);
124 } 125 }
125 } 126 }
126 } 127 }
127 } 128 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/action_box_menu.h ('k') | chrome/browser/ui/views/autofill/autofill_dialog_views.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698