summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorandresantoso@chromium.org <andresantoso@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-15 00:42:23 +0000
committerandresantoso@chromium.org <andresantoso@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-15 00:42:23 +0000
commit0a37a5d254ce40eb5a16e886a53f907877b0ca49 (patch)
tree368fec48373e40c4dd98f672b82a6b8f49796ea8 /ui
parent0bd3c7cec1fa9c3599838d402e71987d55dd4c1a (diff)
downloadchromium_src-0a37a5d254ce40eb5a16e886a53f907877b0ca49.zip
chromium_src-0a37a5d254ce40eb5a16e886a53f907877b0ca49.tar.gz
chromium_src-0a37a5d254ce40eb5a16e886a53f907877b0ca49.tar.bz2
MacViews: Move menu run types parameter to constructor.
This is in preparation for supporting running native Cocoa context menus to support Services (https://codereview.chromium.org/331993009/). The parameter is moved to the constructor so that we can know which kind of MenuRunnerImpl to create at construction time. TBR=sky@chromium.org BUG=388455 Review URL: https://codereview.chromium.org/390183002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@283114 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r--ui/app_list/views/app_list_item_view.cc6
-rw-r--r--ui/app_list/views/app_list_menu_views.cc5
-rw-r--r--ui/app_list/views/search_result_view.cc6
-rw-r--r--ui/message_center/views/message_view_context_menu_controller.cc6
-rw-r--r--ui/message_center/views/notifier_settings_view.cc7
-rw-r--r--ui/views/controls/combobox/combobox.cc7
-rw-r--r--ui/views/controls/menu/menu_model_adapter_unittest.cc2
-rw-r--r--ui/views/controls/menu/menu_runner.cc22
-rw-r--r--ui/views/controls/menu/menu_runner.h15
-rw-r--r--ui/views/controls/scrollbar/base_scroll_bar.cc16
-rw-r--r--ui/views/controls/textfield/textfield.cc16
-rw-r--r--ui/views/examples/menu_example.cc5
-rw-r--r--ui/views/examples/tree_view_example.cc6
13 files changed, 57 insertions, 62 deletions
diff --git a/ui/app_list/views/app_list_item_view.cc b/ui/app_list/views/app_list_item_view.cc
index 3d4897c..671d299 100644
--- a/ui/app_list/views/app_list_item_view.cc
+++ b/ui/app_list/views/app_list_item_view.cc
@@ -364,13 +364,13 @@ void AppListItemView::ShowContextMenuForView(views::View* source,
if (!menu_model)
return;
- context_menu_runner_.reset(new views::MenuRunner(menu_model));
+ context_menu_runner_.reset(
+ new views::MenuRunner(menu_model, views::MenuRunner::HAS_MNEMONICS));
if (context_menu_runner_->RunMenuAt(GetWidget(),
NULL,
gfx::Rect(point, gfx::Size()),
views::MENU_ANCHOR_TOPLEFT,
- source_type,
- views::MenuRunner::HAS_MNEMONICS) ==
+ source_type) ==
views::MenuRunner::MENU_DELETED) {
return;
}
diff --git a/ui/app_list/views/app_list_menu_views.cc b/ui/app_list/views/app_list_menu_views.cc
index a920bdb..0dc76cf 100644
--- a/ui/app_list/views/app_list_menu_views.cc
+++ b/ui/app_list/views/app_list_menu_views.cc
@@ -23,7 +23,7 @@ AppListMenuViews::AppListMenuViews(AppListViewDelegate* delegate)
: AppListMenu(delegate) {
menu_delegate_.reset(new views::MenuModelAdapter(menu_model()));
menu_ = new MenuItemView(menu_delegate_.get());
- menu_runner_.reset(new views::MenuRunner(menu_));
+ menu_runner_.reset(new views::MenuRunner(menu_, 0));
menu_delegate_->BuildMenu(menu_);
}
@@ -35,8 +35,7 @@ void AppListMenuViews::RunMenuAt(views::MenuButton* button,
button,
gfx::Rect(point, gfx::Size()),
views::MENU_ANCHOR_TOPRIGHT,
- ui::MENU_SOURCE_NONE,
- 0));
+ ui::MENU_SOURCE_NONE));
}
void AppListMenuViews::Cancel() {
diff --git a/ui/app_list/views/search_result_view.cc b/ui/app_list/views/search_result_view.cc
index f5f11e6..74e3d7a 100644
--- a/ui/app_list/views/search_result_view.cc
+++ b/ui/app_list/views/search_result_view.cc
@@ -341,13 +341,13 @@ void SearchResultView::ShowContextMenuForView(views::View* source,
if (!menu_model)
return;
- context_menu_runner_.reset(new views::MenuRunner(menu_model));
+ context_menu_runner_.reset(
+ new views::MenuRunner(menu_model, views::MenuRunner::HAS_MNEMONICS));
if (context_menu_runner_->RunMenuAt(GetWidget(),
NULL,
gfx::Rect(point, gfx::Size()),
views::MENU_ANCHOR_TOPLEFT,
- source_type,
- views::MenuRunner::HAS_MNEMONICS) ==
+ source_type) ==
views::MenuRunner::MENU_DELETED)
return;
}
diff --git a/ui/message_center/views/message_view_context_menu_controller.cc b/ui/message_center/views/message_view_context_menu_controller.cc
index 3edaa29..d5b6139 100644
--- a/ui/message_center/views/message_view_context_menu_controller.cc
+++ b/ui/message_center/views/message_view_context_menu_controller.cc
@@ -32,14 +32,14 @@ void MessageViewContextMenuController::ShowContextMenuForView(
if (!menu_model || menu_model->GetItemCount() == 0)
return;
- views::MenuRunner menu_runner(menu_model.get());
+ views::MenuRunner menu_runner(menu_model.get(),
+ views::MenuRunner::HAS_MNEMONICS);
ignore_result(menu_runner.RunMenuAt(source->GetWidget()->GetTopLevelWidget(),
NULL,
gfx::Rect(point, gfx::Size()),
views::MENU_ANCHOR_TOPRIGHT,
- source_type,
- views::MenuRunner::HAS_MNEMONICS));
+ source_type));
}
} // namespace message_center
diff --git a/ui/message_center/views/notifier_settings_view.cc b/ui/message_center/views/notifier_settings_view.cc
index 4b12ede..80cb402 100644
--- a/ui/message_center/views/notifier_settings_view.cc
+++ b/ui/message_center/views/notifier_settings_view.cc
@@ -686,8 +686,8 @@ void NotifierSettingsView::ButtonPressed(views::Button* sender,
void NotifierSettingsView::OnMenuButtonClicked(views::View* source,
const gfx::Point& point) {
notifier_group_menu_model_.reset(new NotifierGroupMenuModel(provider_));
- notifier_group_menu_runner_.reset(
- new views::MenuRunner(notifier_group_menu_model_.get()));
+ notifier_group_menu_runner_.reset(new views::MenuRunner(
+ notifier_group_menu_model_.get(), views::MenuRunner::CONTEXT_MENU));
gfx::Rect menu_anchor = source->GetBoundsInScreen();
menu_anchor.Inset(
gfx::Insets(0, kMenuWhitespaceOffset, 0, kMenuWhitespaceOffset));
@@ -696,8 +696,7 @@ void NotifierSettingsView::OnMenuButtonClicked(views::View* source,
notifier_group_selector_,
menu_anchor,
views::MENU_ANCHOR_BUBBLE_ABOVE,
- ui::MENU_SOURCE_MOUSE,
- views::MenuRunner::CONTEXT_MENU))
+ ui::MENU_SOURCE_MOUSE))
return;
MessageCenterView* center_view = static_cast<MessageCenterView*>(parent());
center_view->OnSettingsChanged();
diff --git a/ui/views/controls/combobox/combobox.cc b/ui/views/controls/combobox/combobox.cc
index b2a456d..520dd94 100644
--- a/ui/views/controls/combobox/combobox.cc
+++ b/ui/views/controls/combobox/combobox.cc
@@ -591,7 +591,7 @@ void Combobox::UpdateFromModel() {
MenuItemView* menu = new MenuItemView(this);
// MenuRunner owns |menu|.
- dropdown_list_menu_runner_.reset(new MenuRunner(menu));
+ dropdown_list_menu_runner_.reset(new MenuRunner(menu, MenuRunner::COMBOBOX));
int num_items = model()->GetItemCount();
int width = 0;
@@ -782,9 +782,8 @@ void Combobox::ShowDropDownMenu(ui::MenuSourceType source_type) {
dropdown_open_ = true;
MenuAnchorPosition anchor_position =
style_ == STYLE_ACTION ? MENU_ANCHOR_TOPRIGHT : MENU_ANCHOR_TOPLEFT;
- if (dropdown_list_menu_runner_->RunMenuAt(GetWidget(), NULL, bounds,
- anchor_position, source_type,
- MenuRunner::COMBOBOX) ==
+ if (dropdown_list_menu_runner_->RunMenuAt(
+ GetWidget(), NULL, bounds, anchor_position, source_type) ==
MenuRunner::MENU_DELETED) {
return;
}
diff --git a/ui/views/controls/menu/menu_model_adapter_unittest.cc b/ui/views/controls/menu/menu_model_adapter_unittest.cc
index cba4d2f..afcb823 100644
--- a/ui/views/controls/menu/menu_model_adapter_unittest.cc
+++ b/ui/views/controls/menu/menu_model_adapter_unittest.cc
@@ -207,7 +207,7 @@ TEST_F(MenuModelAdapterTest, BasicTest) {
// Create menu. Build menu twice to check that rebuilding works properly.
MenuItemView* menu = new views::MenuItemView(&delegate);
// MenuRunner takes ownership of menu.
- scoped_ptr<MenuRunner> menu_runner(new MenuRunner(menu));
+ scoped_ptr<MenuRunner> menu_runner(new MenuRunner(menu, 0));
delegate.BuildMenu(menu);
delegate.BuildMenu(menu);
EXPECT_TRUE(menu->HasSubmenu());
diff --git a/ui/views/controls/menu/menu_runner.cc b/ui/views/controls/menu/menu_runner.cc
index ca36d02..047e9f0 100644
--- a/ui/views/controls/menu/menu_runner.cc
+++ b/ui/views/controls/menu/menu_runner.cc
@@ -280,13 +280,14 @@ bool MenuRunnerImpl::ShouldShowMnemonics(MenuButton* button) {
} // namespace internal
-MenuRunner::MenuRunner(ui::MenuModel* menu_model)
- : menu_model_adapter_(new MenuModelAdapter(menu_model)),
+MenuRunner::MenuRunner(ui::MenuModel* menu_model, int32 run_types)
+ : run_types_(run_types),
+ menu_model_adapter_(new MenuModelAdapter(menu_model)),
holder_(new internal::MenuRunnerImpl(menu_model_adapter_->CreateMenu())) {
}
-MenuRunner::MenuRunner(MenuItemView* menu)
- : holder_(new internal::MenuRunnerImpl(menu)) {
+MenuRunner::MenuRunner(MenuItemView* menu_view, int32 run_types)
+ : run_types_(run_types), holder_(new internal::MenuRunnerImpl(menu_view)) {
}
MenuRunner::~MenuRunner() {
@@ -301,22 +302,21 @@ MenuRunner::RunResult MenuRunner::RunMenuAt(Widget* parent,
MenuButton* button,
const gfx::Rect& bounds,
MenuAnchorPosition anchor,
- ui::MenuSourceType source_type,
- int32 types) {
+ ui::MenuSourceType source_type) {
if (runner_handler_.get()) {
- return runner_handler_->RunMenuAt(parent, button, bounds, anchor,
- source_type, types);
+ return runner_handler_->RunMenuAt(
+ parent, button, bounds, anchor, source_type, run_types_);
}
// The parent of the nested menu will have created a DisplayChangeListener, so
// we avoid creating a DisplayChangeListener if nested. Drop menus are
// transient, so we don't cancel in that case.
- if ((types & (IS_NESTED | FOR_DROP)) == 0 && parent) {
+ if ((run_types_ & (IS_NESTED | FOR_DROP)) == 0 && parent) {
display_change_listener_.reset(
internal::DisplayChangeListener::Create(parent, this));
}
- if (types & CONTEXT_MENU) {
+ if (run_types_ & CONTEXT_MENU) {
switch (source_type) {
case ui::MENU_SOURCE_NONE:
case ui::MENU_SOURCE_KEYBOARD:
@@ -332,7 +332,7 @@ MenuRunner::RunResult MenuRunner::RunMenuAt(Widget* parent,
}
}
- return holder_->RunMenuAt(parent, button, bounds, anchor, types);
+ return holder_->RunMenuAt(parent, button, bounds, anchor, run_types_);
}
bool MenuRunner::IsRunning() const {
diff --git a/ui/views/controls/menu/menu_runner.h b/ui/views/controls/menu/menu_runner.h
index 824afdf..a96bfb2 100644
--- a/ui/views/controls/menu/menu_runner.h
+++ b/ui/views/controls/menu/menu_runner.h
@@ -93,8 +93,9 @@ class VIEWS_EXPORT MenuRunner {
};
// Creates a new MenuRunner.
- explicit MenuRunner(ui::MenuModel* menu_model);
- explicit MenuRunner(MenuItemView* menu);
+ // |run_types| is a bitmask of RunTypes.
+ MenuRunner(ui::MenuModel* menu_model, int32 run_types);
+ MenuRunner(MenuItemView* menu, int32 run_types);
~MenuRunner();
// Returns the menu.
@@ -105,8 +106,8 @@ class VIEWS_EXPORT MenuRunner {
// MenuDelegate::GetSiblingMenu.
void OwnMenu(MenuItemView* menu);
- // Runs the menu. |types| is a bitmask of RunTypes. If this returns
- // MENU_DELETED the method is returning because the MenuRunner was deleted.
+ // Runs the menu. If this returns MENU_DELETED the method is returning
+ // because the MenuRunner was deleted.
// Typically callers should NOT do any processing if this returns
// MENU_DELETED.
// If |anchor| uses a |BUBBLE_..| type, the bounds will get determined by
@@ -115,8 +116,7 @@ class VIEWS_EXPORT MenuRunner {
MenuButton* button,
const gfx::Rect& bounds,
MenuAnchorPosition anchor,
- ui::MenuSourceType source_type,
- int32 types) WARN_UNUSED_RESULT;
+ ui::MenuSourceType source_type) WARN_UNUSED_RESULT;
// Returns true if we're in a nested message loop running the menu.
bool IsRunning() const;
@@ -133,6 +133,7 @@ class VIEWS_EXPORT MenuRunner {
// Sets an implementation of RunMenuAt. This is intended to be used at test.
void SetRunnerHandler(scoped_ptr<MenuRunnerHandler> runner_handler);
+ const int32 run_types_;
scoped_ptr<MenuModelAdapter> menu_model_adapter_;
internal::MenuRunnerImpl* holder_;
@@ -164,7 +165,7 @@ class DisplayChangeListener {
DisplayChangeListener() {}
};
-}
+} // namespace internal
} // namespace views
diff --git a/ui/views/controls/scrollbar/base_scroll_bar.cc b/ui/views/controls/scrollbar/base_scroll_bar.cc
index 5e4d6a5..c93f48e 100644
--- a/ui/views/controls/scrollbar/base_scroll_bar.cc
+++ b/ui/views/controls/scrollbar/base_scroll_bar.cc
@@ -294,7 +294,8 @@ void BaseScrollBar::ShowContextMenuForView(View* source,
views::MenuItemView* menu = new views::MenuItemView(this);
// MenuRunner takes ownership of |menu|.
- menu_runner_.reset(new MenuRunner(menu));
+ menu_runner_.reset(new MenuRunner(
+ menu, MenuRunner::HAS_MNEMONICS | views::MenuRunner::CONTEXT_MENU));
menu->AppendDelegateMenuItem(ScrollBarContextMenuCommand_ScrollHere);
menu->AppendSeparator();
menu->AppendDelegateMenuItem(ScrollBarContextMenuCommand_ScrollStart);
@@ -305,14 +306,11 @@ void BaseScrollBar::ShowContextMenuForView(View* source,
menu->AppendSeparator();
menu->AppendDelegateMenuItem(ScrollBarContextMenuCommand_ScrollPrev);
menu->AppendDelegateMenuItem(ScrollBarContextMenuCommand_ScrollNext);
- if (menu_runner_->RunMenuAt(
- GetWidget(),
- NULL,
- gfx::Rect(p, gfx::Size()),
- MENU_ANCHOR_TOPLEFT,
- source_type,
- MenuRunner::HAS_MNEMONICS | views::MenuRunner::CONTEXT_MENU) ==
- MenuRunner::MENU_DELETED) {
+ if (menu_runner_->RunMenuAt(GetWidget(),
+ NULL,
+ gfx::Rect(p, gfx::Size()),
+ MENU_ANCHOR_TOPLEFT,
+ source_type) == MenuRunner::MENU_DELETED) {
return;
}
}
diff --git a/ui/views/controls/textfield/textfield.cc b/ui/views/controls/textfield/textfield.cc
index 5cde2ea..d5979a8 100644
--- a/ui/views/controls/textfield/textfield.cc
+++ b/ui/views/controls/textfield/textfield.cc
@@ -987,13 +987,11 @@ void Textfield::ShowContextMenuForView(View* source,
const gfx::Point& point,
ui::MenuSourceType source_type) {
UpdateContextMenu();
- ignore_result(context_menu_runner_->RunMenuAt(
- GetWidget(),
- NULL,
- gfx::Rect(point, gfx::Size()),
- MENU_ANCHOR_TOPLEFT,
- source_type,
- MenuRunner::HAS_MNEMONICS | MenuRunner::CONTEXT_MENU));
+ ignore_result(context_menu_runner_->RunMenuAt(GetWidget(),
+ NULL,
+ gfx::Rect(point, gfx::Size()),
+ MENU_ANCHOR_TOPLEFT,
+ source_type));
}
////////////////////////////////////////////////////////////////////////////////
@@ -1703,7 +1701,9 @@ void Textfield::UpdateContextMenu() {
if (controller_)
controller_->UpdateContextMenu(context_menu_contents_.get());
}
- context_menu_runner_.reset(new MenuRunner(context_menu_contents_.get()));
+ context_menu_runner_.reset(
+ new MenuRunner(context_menu_contents_.get(),
+ MenuRunner::HAS_MNEMONICS | MenuRunner::CONTEXT_MENU));
}
void Textfield::TrackMouseClicks(const ui::MouseEvent& event) {
diff --git a/ui/views/examples/menu_example.cc b/ui/views/examples/menu_example.cc
index 742cfff..bc8845e 100644
--- a/ui/views/examples/menu_example.cc
+++ b/ui/views/examples/menu_example.cc
@@ -187,14 +187,13 @@ ExampleMenuButton::~ExampleMenuButton() {
void ExampleMenuButton::OnMenuButtonClicked(View* source,
const gfx::Point& point) {
- menu_runner_.reset(new MenuRunner(GetMenuModel()));
+ menu_runner_.reset(new MenuRunner(GetMenuModel(), MenuRunner::HAS_MNEMONICS));
if (menu_runner_->RunMenuAt(source->GetWidget()->GetTopLevelWidget(),
this,
gfx::Rect(point, gfx::Size()),
MENU_ANCHOR_TOPRIGHT,
- ui::MENU_SOURCE_NONE,
- MenuRunner::HAS_MNEMONICS) ==
+ ui::MENU_SOURCE_NONE) ==
MenuRunner::MENU_DELETED) {
return;
}
diff --git a/ui/views/examples/tree_view_example.cc b/ui/views/examples/tree_view_example.cc
index 2f6cc4c..5da97f7 100644
--- a/ui/views/examples/tree_view_example.cc
+++ b/ui/views/examples/tree_view_example.cc
@@ -131,13 +131,13 @@ void TreeViewExample::ShowContextMenuForView(View* source,
context_menu_model.AddItem(ID_EDIT, ASCIIToUTF16("Edit"));
context_menu_model.AddItem(ID_REMOVE, ASCIIToUTF16("Remove"));
context_menu_model.AddItem(ID_ADD, ASCIIToUTF16("Add"));
- context_menu_runner_.reset(new MenuRunner(&context_menu_model));
+ context_menu_runner_.reset(new MenuRunner(&context_menu_model, 0));
if (context_menu_runner_->RunMenuAt(source->GetWidget(),
NULL,
gfx::Rect(point, gfx::Size()),
MENU_ANCHOR_TOPLEFT,
- source_type,
- 0) == MenuRunner::MENU_DELETED) {
+ source_type) ==
+ MenuRunner::MENU_DELETED) {
return;
}
}