diff options
author | tapted@chromium.org <tapted@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-01 07:50:35 +0000 |
---|---|---|
committer | tapted@chromium.org <tapted@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-01 07:50:35 +0000 |
commit | fd6c0a60b699d6dd924a296b6c97cabdb0138140 (patch) | |
tree | e89700ef72606d09cec943154af7dfae36e90eb2 | |
parent | 530a52a317f97cc37d0482edbc0de6033450b2da (diff) | |
download | chromium_src-fd6c0a60b699d6dd924a296b6c97cabdb0138140.zip chromium_src-fd6c0a60b699d6dd924a296b6c97cabdb0138140.tar.gz chromium_src-fd6c0a60b699d6dd924a296b6c97cabdb0138140.tar.bz2 |
Move enum MenuAnchorPosition to reduce deps on menu_item_view.h
[Menu]AnchorPosition is used by the MenuRunner and other APIs. Having
the enum nested in MenuItemView means that a lot of files must depend on
menu_item_view.h, even if they are just using a MenuRunner created with
a MenuModel (rather than a MenuItemView).
This CL moves the MenuItemView::AnchorPosition enum to
views::MenuAnchorPosition in menu_types.h. This allows the
menu_item_view.h dependency to be removed from a lot of places
(directly, and transitively by removing menu_item_view.h includes from
any header files).
BUG=366007, 363889
TBR=pfeldman@chromium.org
Review URL: https://codereview.chromium.org/250943008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267471 0039d316-1c4b-4281-b951-d872f2087c98
66 files changed, 384 insertions, 268 deletions
diff --git a/ash/root_window_controller.cc b/ash/root_window_controller.cc index 010ef0e..368dd92 100644 --- a/ash/root_window_controller.cc +++ b/ash/root_window_controller.cc @@ -569,9 +569,11 @@ void RootWindowController::ShowContextMenu(const gfx::Point& location_in_screen, views::MenuRunner menu_runner(menu_model.get()); if (menu_runner.RunMenuAt(wallpaper_controller_->widget(), - NULL, gfx::Rect(location_in_screen, gfx::Size()), - views::MenuItemView::TOPLEFT, source_type, - views::MenuRunner::CONTEXT_MENU) == + NULL, + gfx::Rect(location_in_screen, gfx::Size()), + views::MENU_ANCHOR_TOPLEFT, + source_type, + views::MenuRunner::CONTEXT_MENU) == views::MenuRunner::MENU_DELETED) { return; } diff --git a/ash/shelf/shelf_view.cc b/ash/shelf/shelf_view.cc index 26066f5..1cc1cf6 100644 --- a/ash/shelf/shelf_view.cc +++ b/ash/shelf/shelf_view.cc @@ -1767,8 +1767,7 @@ void ShelfView::ShowMenu(scoped_ptr<views::MenuModelAdapter> menu_model_adapter, source->GetWidget()->GetNativeView()->GetRootWindow()); // Determine the menu alignment dependent on the shelf. - views::MenuItemView::AnchorPosition menu_alignment = - views::MenuItemView::TOPLEFT; + views::MenuAnchorPosition menu_alignment = views::MENU_ANCHOR_TOPLEFT; gfx::Rect anchor_point = gfx::Rect(click_point, gfx::Size()); ShelfWidget* shelf = RootWindowController::ForShelf( @@ -1793,16 +1792,16 @@ void ShelfView::ShowMenu(scoped_ptr<views::MenuModelAdapter> menu_model_adapter, switch (align) { case SHELF_ALIGNMENT_BOTTOM: - menu_alignment = views::MenuItemView::BUBBLE_ABOVE; + menu_alignment = views::MENU_ANCHOR_BUBBLE_ABOVE; break; case SHELF_ALIGNMENT_LEFT: - menu_alignment = views::MenuItemView::BUBBLE_RIGHT; + menu_alignment = views::MENU_ANCHOR_BUBBLE_RIGHT; break; case SHELF_ALIGNMENT_RIGHT: - menu_alignment = views::MenuItemView::BUBBLE_LEFT; + menu_alignment = views::MENU_ANCHOR_BUBBLE_LEFT; break; case SHELF_ALIGNMENT_TOP: - menu_alignment = views::MenuItemView::BUBBLE_BELOW; + menu_alignment = views::MENU_ANCHOR_BUBBLE_BELOW; break; } } diff --git a/ash/shell/window_type_launcher.cc b/ash/shell/window_type_launcher.cc index e0214d3..61ba3fa 100644 --- a/ash/shell/window_type_launcher.cc +++ b/ash/shell/window_type_launcher.cc @@ -387,13 +387,16 @@ void WindowTypeLauncher::ShowContextMenuForView( MenuItemView::NORMAL); // MenuRunner takes ownership of root. menu_runner_.reset(new MenuRunner(root)); - if (menu_runner_->RunMenuAt(GetWidget(), NULL, - gfx::Rect(point, gfx::Size()), - MenuItemView::TOPLEFT, - source_type, - MenuRunner::HAS_MNEMONICS | views::MenuRunner::CONTEXT_MENU) == - MenuRunner::MENU_DELETED) + if (menu_runner_->RunMenuAt( + GetWidget(), + NULL, + gfx::Rect(point, gfx::Size()), + views::MENU_ANCHOR_TOPLEFT, + source_type, + MenuRunner::HAS_MNEMONICS | views::MenuRunner::CONTEXT_MENU) == + MenuRunner::MENU_DELETED) { return; + } } } // namespace shell diff --git a/ash/shell_unittest.cc b/ash/shell_unittest.cc index 5c206a5..59344ce 100644 --- a/ash/shell_unittest.cc +++ b/ash/shell_unittest.cc @@ -380,9 +380,12 @@ TEST_F(ShellTest, LockScreenClosesActiveMenu) { base::Unretained(this))); EXPECT_EQ(views::MenuRunner::NORMAL_EXIT, - menu_runner->RunMenuAt(widget, NULL, gfx::Rect(), - views::MenuItemView::TOPLEFT, ui::MENU_SOURCE_MOUSE, - views::MenuRunner::CONTEXT_MENU)); + menu_runner->RunMenuAt(widget, + NULL, + gfx::Rect(), + views::MENU_ANCHOR_TOPLEFT, + ui::MENU_SOURCE_MOUSE, + views::MenuRunner::CONTEXT_MENU)); } TEST_F(ShellTest, ManagedWindowModeBasics) { diff --git a/chrome/browser/ui/views/apps/chrome_native_app_window_views.cc b/chrome/browser/ui/views/apps/chrome_native_app_window_views.cc index 114605f..76af22f 100644 --- a/chrome/browser/ui/views/apps/chrome_native_app_window_views.cc +++ b/chrome/browser/ui/views/apps/chrome_native_app_window_views.cc @@ -453,12 +453,16 @@ void ChromeNativeAppWindowViews::ShowContextMenuForView( widget()->non_client_view()->NonClientHitTest(point_in_view_coords); if (hit_test == HTCAPTION) { menu_runner_.reset(new views::MenuRunner(model.get())); - if (menu_runner_->RunMenuAt(source->GetWidget(), NULL, - gfx::Rect(p, gfx::Size(0,0)), views::MenuItemView::TOPLEFT, - source_type, - views::MenuRunner::HAS_MNEMONICS | views::MenuRunner::CONTEXT_MENU) == - views::MenuRunner::MENU_DELETED) + if (menu_runner_->RunMenuAt(source->GetWidget(), + NULL, + gfx::Rect(p, gfx::Size(0, 0)), + views::MENU_ANCHOR_TOPLEFT, + source_type, + views::MenuRunner::HAS_MNEMONICS | + views::MenuRunner::CONTEXT_MENU) == + views::MenuRunner::MENU_DELETED) { return; + } } #endif } diff --git a/chrome/browser/ui/views/autofill/autofill_dialog_views.cc b/chrome/browser/ui/views/autofill/autofill_dialog_views.cc index ac01f32..7a38f8e 100644 --- a/chrome/browser/ui/views/autofill/autofill_dialog_views.cc +++ b/chrome/browser/ui/views/autofill/autofill_dialog_views.cc @@ -537,7 +537,7 @@ void AutofillDialogViews::AccountChooser::OnMenuButtonClicked( if (menu_runner_->RunMenuAt(source->GetWidget(), NULL, source->GetBoundsInScreen(), - views::MenuItemView::TOPRIGHT, + views::MENU_ANCHOR_TOPRIGHT, ui::MENU_SOURCE_NONE, 0) == views::MenuRunner::MENU_DELETED) { return; @@ -1752,7 +1752,7 @@ void AutofillDialogViews::OnMenuButtonClicked(views::View* source, if (menu_runner_->RunMenuAt(source->GetWidget(), NULL, screen_bounds, - views::MenuItemView::TOPRIGHT, + views::MENU_ANCHOR_TOPRIGHT, ui::MENU_SOURCE_NONE, 0) == views::MenuRunner::MENU_DELETED) { return; diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc index 181371e..1ad31a67 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc +++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc @@ -75,7 +75,6 @@ #include "ui/views/button_drag_utils.h" #include "ui/views/controls/button/menu_button.h" #include "ui/views/controls/label.h" -#include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/drag_utils.h" #include "ui/views/metrics.h" #include "ui/views/view_constants.h" @@ -90,7 +89,6 @@ using content::Referrer; using ui::DropTargetEvent; using views::CustomButton; using views::MenuButton; -using views::MenuItemView; using views::View; // Margins around the content. @@ -567,11 +565,11 @@ views::MenuButton* BookmarkBarView::GetMenuButtonForNode( void BookmarkBarView::GetAnchorPositionForButton( views::MenuButton* button, - MenuItemView::AnchorPosition* anchor) { + views::MenuAnchorPosition* anchor) { if (button == other_bookmarked_button_ || button == overflow_button_) - *anchor = MenuItemView::TOPRIGHT; + *anchor = views::MENU_ANCHOR_TOPRIGHT; else - *anchor = MenuItemView::TOPLEFT; + *anchor = views::MENU_ANCHOR_TOPLEFT; } views::MenuItemView* BookmarkBarView::GetMenu() { diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h index 9508538..bc42924 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h +++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h @@ -25,7 +25,7 @@ #include "ui/views/context_menu_controller.h" #include "ui/views/controls/button/button.h" #include "ui/views/controls/button/menu_button_listener.h" -#include "ui/views/controls/menu/menu_item_view.h" +#include "ui/views/controls/menu/menu_types.h" #include "ui/views/drag_controller.h" class BookmarkContextMenu; @@ -44,6 +44,7 @@ class SlideAnimation; namespace views { class CustomButton; class MenuButton; +class MenuItemView; class TextButton; } @@ -120,7 +121,7 @@ class BookmarkBarView : public DetachableToolbarView, // Returns the position to anchor the menu for |button| at. void GetAnchorPositionForButton(views::MenuButton* button, - views::MenuItemView::AnchorPosition* anchor); + views::MenuAnchorPosition* anchor); // Returns the button responsible for showing bookmarks in the other bookmark // folder. diff --git a/chrome/browser/ui/views/bookmarks/bookmark_context_menu.cc b/chrome/browser/ui/views/bookmarks/bookmark_context_menu.cc index 5421529..8e4fd1d 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_context_menu.cc +++ b/chrome/browser/ui/views/bookmarks/bookmark_context_menu.cc @@ -67,12 +67,16 @@ void BookmarkContextMenu::RunMenuAt(const gfx::Point& point, content::NotificationService::NoDetails()); // width/height don't matter here. if (menu_runner_->RunMenuAt( - parent_widget_, NULL, gfx::Rect(point.x(), point.y(), 0, 0), - views::MenuItemView::TOPLEFT, source_type, + parent_widget_, + NULL, + gfx::Rect(point.x(), point.y(), 0, 0), + views::MENU_ANCHOR_TOPLEFT, + source_type, (views::MenuRunner::HAS_MNEMONICS | views::MenuRunner::IS_NESTED | views::MenuRunner::CONTEXT_MENU)) == - views::MenuRunner::MENU_DELETED) + views::MenuRunner::MENU_DELETED) { return; + } } void BookmarkContextMenu::SetPageNavigator(PageNavigator* navigator) { diff --git a/chrome/browser/ui/views/bookmarks/bookmark_editor_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_editor_view.cc index c07ee69..f505a71 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_editor_view.cc +++ b/chrome/browser/ui/views/bookmarks/bookmark_editor_view.cc @@ -249,12 +249,16 @@ void BookmarkEditorView::ShowContextMenuForView( context_menu_runner_.reset(new views::MenuRunner(GetMenuModel())); - if (context_menu_runner_->RunMenuAt(source->GetWidget()->GetTopLevelWidget(), - NULL, gfx::Rect(point, gfx::Size()), views::MenuItemView::TOPRIGHT, - source_type, - views::MenuRunner::HAS_MNEMONICS | views::MenuRunner::CONTEXT_MENU) == - views::MenuRunner::MENU_DELETED) + if (context_menu_runner_->RunMenuAt( + source->GetWidget()->GetTopLevelWidget(), + NULL, + gfx::Rect(point, gfx::Size()), + views::MENU_ANCHOR_TOPRIGHT, + source_type, + views::MenuRunner::HAS_MNEMONICS | views::MenuRunner::CONTEXT_MENU) == + views::MenuRunner::MENU_DELETED) { return; + } } void BookmarkEditorView::Init() { diff --git a/chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.cc b/chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.cc index ea92b77..b02c31c 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.cc +++ b/chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.cc @@ -21,6 +21,7 @@ #include "ui/base/dragdrop/os_exchange_data.h" #include "ui/base/resource/resource_bundle.h" #include "ui/views/controls/button/menu_button.h" +#include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/controls/menu/menu_runner.h" #include "ui/views/widget/widget.h" @@ -51,7 +52,7 @@ void BookmarkMenuController::RunMenuAt(BookmarkBarView* bookmark_bar, bookmark_bar_ = bookmark_bar; views::MenuButton* menu_button = bookmark_bar_->GetMenuButtonForNode(node_); DCHECK(menu_button); - MenuItemView::AnchorPosition anchor; + views::MenuAnchorPosition anchor; bookmark_bar_->GetAnchorPositionForButton(menu_button, &anchor); gfx::Point screen_loc; views::View::ConvertPointToScreen(menu_button, &screen_loc); @@ -163,7 +164,7 @@ int BookmarkMenuController::GetDragOperations(MenuItemView* sender) { views::MenuItemView* BookmarkMenuController::GetSiblingMenu( views::MenuItemView* menu, const gfx::Point& screen_point, - views::MenuItemView::AnchorPosition* anchor, + views::MenuAnchorPosition* anchor, bool* has_mnemonics, views::MenuButton** button) { if (!bookmark_bar_ || for_drop_) diff --git a/chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.h b/chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.h index 39608d4..d5065ab 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.h +++ b/chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.h @@ -11,7 +11,6 @@ #include "components/bookmarks/core/browser/base_bookmark_model_observer.h" #include "components/bookmarks/core/browser/bookmark_node_data.h" #include "ui/views/controls/menu/menu_delegate.h" -#include "ui/views/controls/menu/menu_item_view.h" class BookmarkBarView; class BookmarkMenuControllerObserver; @@ -29,6 +28,7 @@ class OSExchangeData; namespace views { class MenuButton; +class MenuItemView; class MenuRunner; class Widget; } @@ -107,7 +107,7 @@ class BookmarkMenuController : public BaseBookmarkModelObserver, virtual views::MenuItemView* GetSiblingMenu( views::MenuItemView* menu, const gfx::Point& screen_point, - views::MenuItemView::AnchorPosition* anchor, + views::MenuAnchorPosition* anchor, bool* has_mnemonics, views::MenuButton** button) OVERRIDE; virtual int GetMaxWidthForMenu(views::MenuItemView* view) OVERRIDE; diff --git a/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate_unittest.cc b/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate_unittest.cc index c1946919..8a7dba6 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate_unittest.cc +++ b/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate_unittest.cc @@ -12,6 +12,7 @@ #include "chrome/test/base/browser_with_test_window_test.h" #include "chrome/test/base/testing_profile.h" #include "components/bookmarks/core/browser/bookmark_model.h" +#include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/controls/menu/menu_runner.h" #include "ui/views/controls/menu/submenu_view.h" diff --git a/chrome/browser/ui/views/content_setting_bubble_contents.cc b/chrome/browser/ui/views/content_setting_bubble_contents.cc index d82392d..9bfee02 100644 --- a/chrome/browser/ui/views/content_setting_bubble_contents.cc +++ b/chrome/browser/ui/views/content_setting_bubble_contents.cc @@ -444,13 +444,13 @@ void ContentSettingBubbleContents::OnMenuButtonClicked( gfx::Point screen_location; views::View::ConvertPointToScreen(j->first, &screen_location); - ignore_result(menu_runner_->RunMenuAt( - source->GetWidget(), - j->first, - gfx::Rect(screen_location, j->first->size()), - views::MenuItemView::TOPLEFT, - ui::MENU_SOURCE_NONE, - views::MenuRunner::HAS_MNEMONICS)); + ignore_result( + menu_runner_->RunMenuAt(source->GetWidget(), + j->first, + gfx::Rect(screen_location, j->first->size()), + views::MENU_ANCHOR_TOPLEFT, + ui::MENU_SOURCE_NONE, + views::MenuRunner::HAS_MNEMONICS)); } int ContentSettingBubbleContents::GetPreferredMediaMenuWidth( diff --git a/chrome/browser/ui/views/download/download_shelf_context_menu_view.cc b/chrome/browser/ui/views/download/download_shelf_context_menu_view.cc index d65f7fd..570f3e3 100644 --- a/chrome/browser/ui/views/download/download_shelf_context_menu_view.cc +++ b/chrome/browser/ui/views/download/download_shelf_context_menu_view.cc @@ -10,7 +10,6 @@ #include "content/public/browser/download_item.h" #include "content/public/browser/page_navigator.h" #include "ui/gfx/point.h" -#include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/controls/menu/menu_runner.h" DownloadShelfContextMenuView::DownloadShelfContextMenuView( @@ -31,11 +30,11 @@ void DownloadShelfContextMenuView::Run(views::Widget* parent_widget, menu_runner_.reset(new views::MenuRunner(menu_model)); // The menu's alignment is determined based on the UI layout. - views::MenuItemView::AnchorPosition position; + views::MenuAnchorPosition position; if (base::i18n::IsRTL()) - position = views::MenuItemView::TOPRIGHT; + position = views::MENU_ANCHOR_TOPRIGHT; else - position = views::MenuItemView::TOPLEFT; + position = views::MENU_ANCHOR_TOPLEFT; // The return value of RunMenuAt indicates whether the MenuRunner was deleted // while running the menu, which indicates that the containing view may have diff --git a/chrome/browser/ui/views/extensions/browser_action_overflow_menu_controller.cc b/chrome/browser/ui/views/extensions/browser_action_overflow_menu_controller.cc index 21041cb..4bc75b8 100644 --- a/chrome/browser/ui/views/extensions/browser_action_overflow_menu_controller.cc +++ b/chrome/browser/ui/views/extensions/browser_action_overflow_menu_controller.cc @@ -112,7 +112,7 @@ bool BrowserActionOverflowMenuController::RunMenu(views::Widget* window, bounds.set_x(screen_loc.x()); bounds.set_y(screen_loc.y()); - views::MenuItemView::AnchorPosition anchor = views::MenuItemView::TOPRIGHT; + views::MenuAnchorPosition anchor = views::MENU_ANCHOR_TOPRIGHT; // As we maintain our own lifetime we can safely ignore the result. ignore_result(menu_runner_->RunMenuAt(window, menu_button_, bounds, anchor, ui::MENU_SOURCE_NONE, for_drop_ ? views::MenuRunner::FOR_DROP : 0)); @@ -154,11 +154,14 @@ bool BrowserActionOverflowMenuController::ShowContextMenu( // We can ignore the result as we delete ourself. // This blocks until the user choses something or dismisses the menu. - ignore_result(context_menu_runner.RunMenuAt(menu_button_->GetWidget(), - NULL, gfx::Rect(p, gfx::Size()), views::MenuItemView::TOPLEFT, + ignore_result(context_menu_runner.RunMenuAt( + menu_button_->GetWidget(), + NULL, + gfx::Rect(p, gfx::Size()), + views::MENU_ANCHOR_TOPLEFT, source_type, views::MenuRunner::HAS_MNEMONICS | views::MenuRunner::IS_NESTED | - views::MenuRunner::CONTEXT_MENU)); + views::MenuRunner::CONTEXT_MENU)); // The user is done with the context menu, so we can close the underlying // menu. diff --git a/chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc b/chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc index 98fa00e..0eb2890 100644 --- a/chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc +++ b/chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc @@ -324,8 +324,11 @@ void MediaGalleriesDialogViews::ShowContextMenu(const gfx::Point& point, controller_->GetContextMenu(id))); if (context_menu_runner_->RunMenuAt( - GetWidget(), NULL, gfx::Rect(point.x(), point.y(), 0, 0), - views::MenuItemView::TOPLEFT, source_type, + GetWidget(), + NULL, + gfx::Rect(point.x(), point.y(), 0, 0), + views::MENU_ANCHOR_TOPLEFT, + source_type, views::MenuRunner::HAS_MNEMONICS | views::MenuRunner::CONTEXT_MENU) == views::MenuRunner::MENU_DELETED) { return; diff --git a/chrome/browser/ui/views/extensions/media_galleries_scan_result_dialog_views.cc b/chrome/browser/ui/views/extensions/media_galleries_scan_result_dialog_views.cc index f1811c8..792a173 100644 --- a/chrome/browser/ui/views/extensions/media_galleries_scan_result_dialog_views.cc +++ b/chrome/browser/ui/views/extensions/media_galleries_scan_result_dialog_views.cc @@ -272,8 +272,11 @@ void MediaGalleriesScanResultDialogViews::ShowContextMenu( controller_->GetContextMenu(id))); if (context_menu_runner_->RunMenuAt( - GetWidget(), NULL, gfx::Rect(point.x(), point.y(), 0, 0), - views::MenuItemView::TOPLEFT, source_type, + GetWidget(), + NULL, + gfx::Rect(point.x(), point.y(), 0, 0), + views::MENU_ANCHOR_TOPLEFT, + source_type, views::MenuRunner::HAS_MNEMONICS | views::MenuRunner::CONTEXT_MENU) == views::MenuRunner::MENU_DELETED) { return; diff --git a/chrome/browser/ui/views/frame/browser_frame.cc b/chrome/browser/ui/views/frame/browser_frame.cc index 4b4606c..ca38b78 100644 --- a/chrome/browser/ui/views/frame/browser_frame.cc +++ b/chrome/browser/ui/views/frame/browser_frame.cc @@ -256,12 +256,16 @@ void BrowserFrame::ShowContextMenuForView(views::View* source, int hit_test = non_client_view()->NonClientHitTest(point_in_view_coords); if (hit_test == HTCAPTION || hit_test == HTNOWHERE) { menu_runner_.reset(new views::MenuRunner(GetSystemMenuModel())); - if (menu_runner_->RunMenuAt(source->GetWidget(), NULL, - gfx::Rect(p, gfx::Size(0,0)), views::MenuItemView::TOPLEFT, - source_type, - views::MenuRunner::HAS_MNEMONICS | views::MenuRunner::CONTEXT_MENU) == - views::MenuRunner::MENU_DELETED) + if (menu_runner_->RunMenuAt(source->GetWidget(), + NULL, + gfx::Rect(p, gfx::Size(0, 0)), + views::MENU_ANCHOR_TOPLEFT, + source_type, + views::MenuRunner::HAS_MNEMONICS | + views::MenuRunner::CONTEXT_MENU) == + views::MenuRunner::MENU_DELETED) { return; + } } } diff --git a/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc b/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc index 002a54a..7713dc4 100644 --- a/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc +++ b/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc @@ -378,7 +378,7 @@ void OpaqueBrowserFrameView::OnMenuButtonClicked(views::View* source, ignore_result(menu_runner.RunMenuAt(browser_view()->GetWidget(), window_icon_, window_icon_->GetBoundsInScreen(), - views::MenuItemView::TOPLEFT, + views::MENU_ANCHOR_TOPLEFT, ui::MENU_SOURCE_MOUSE, views::MenuRunner::HAS_MNEMONICS)); #endif diff --git a/chrome/browser/ui/views/infobars/after_translate_infobar.cc b/chrome/browser/ui/views/infobars/after_translate_infobar.cc index e2b0aa2..80bd073 100644 --- a/chrome/browser/ui/views/infobars/after_translate_infobar.cc +++ b/chrome/browser/ui/views/infobars/after_translate_infobar.cc @@ -13,7 +13,6 @@ #include "ui/views/controls/button/label_button.h" #include "ui/views/controls/button/menu_button.h" #include "ui/views/controls/label.h" -#include "ui/views/controls/menu/menu_item_view.h" AfterTranslateInfoBar::AfterTranslateInfoBar( scoped_ptr<TranslateInfoBarDelegate> delegate) @@ -162,14 +161,17 @@ void AfterTranslateInfoBar::OnMenuButtonClicked(views::View* source, return; // We're closing; don't call anything, it might access the owner. if (source == original_language_menu_button_) { RunMenuAt(original_language_menu_model_.get(), - original_language_menu_button_, views::MenuItemView::TOPLEFT); + original_language_menu_button_, + views::MENU_ANCHOR_TOPLEFT); } else if (source == target_language_menu_button_) { - RunMenuAt(target_language_menu_model_.get(), target_language_menu_button_, - views::MenuItemView::TOPLEFT); + RunMenuAt(target_language_menu_model_.get(), + target_language_menu_button_, + views::MENU_ANCHOR_TOPLEFT); } else { DCHECK_EQ(options_menu_button_, source); - RunMenuAt(options_menu_model_.get(), options_menu_button_, - views::MenuItemView::TOPRIGHT); + RunMenuAt(options_menu_model_.get(), + options_menu_button_, + views::MENU_ANCHOR_TOPRIGHT); } } diff --git a/chrome/browser/ui/views/infobars/before_translate_infobar.cc b/chrome/browser/ui/views/infobars/before_translate_infobar.cc index 513c563..dcb78a9 100644 --- a/chrome/browser/ui/views/infobars/before_translate_infobar.cc +++ b/chrome/browser/ui/views/infobars/before_translate_infobar.cc @@ -13,7 +13,6 @@ #include "ui/views/controls/button/label_button.h" #include "ui/views/controls/button/menu_button.h" #include "ui/views/controls/label.h" -#include "ui/views/controls/menu/menu_item_view.h" BeforeTranslateInfoBar::BeforeTranslateInfoBar( scoped_ptr<TranslateInfoBarDelegate> delegate) @@ -169,12 +168,14 @@ void BeforeTranslateInfoBar::OnMenuButtonClicked(views::View* source, if (!owner()) return; // We're closing; don't call anything, it might access the owner. if (source == language_menu_button_) { - RunMenuAt(language_menu_model_.get(), language_menu_button_, - views::MenuItemView::TOPLEFT); + RunMenuAt(language_menu_model_.get(), + language_menu_button_, + views::MENU_ANCHOR_TOPLEFT); } else { DCHECK_EQ(options_menu_button_, source); - RunMenuAt(options_menu_model_.get(), options_menu_button_, - views::MenuItemView::TOPRIGHT); + RunMenuAt(options_menu_model_.get(), + options_menu_button_, + views::MENU_ANCHOR_TOPRIGHT); } } diff --git a/chrome/browser/ui/views/infobars/extension_infobar.cc b/chrome/browser/ui/views/infobars/extension_infobar.cc index f7e617f..c4d20d2 100644 --- a/chrome/browser/ui/views/infobars/extension_infobar.cc +++ b/chrome/browser/ui/views/infobars/extension_infobar.cc @@ -23,7 +23,6 @@ #include "ui/gfx/image/image.h" #include "ui/views/controls/button/menu_button.h" #include "ui/views/controls/image_view.h" -#include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/widget/widget.h" @@ -186,9 +185,8 @@ void ExtensionInfoBar::OnMenuButtonClicked(views::View* source, scoped_refptr<ExtensionContextMenuModel> options_menu_contents = new ExtensionContextMenuModel(extension, browser_); DCHECK_EQ(icon_as_menu_, source); - RunMenuAt(options_menu_contents.get(), - icon_as_menu_, - views::MenuItemView::TOPLEFT); + RunMenuAt( + options_menu_contents.get(), icon_as_menu_, views::MENU_ANCHOR_TOPLEFT); } void ExtensionInfoBar::OnImageLoaded(const gfx::Image& image) { diff --git a/chrome/browser/ui/views/infobars/infobar_view.cc b/chrome/browser/ui/views/infobars/infobar_view.cc index 1a76712..5328e2d 100644 --- a/chrome/browser/ui/views/infobars/infobar_view.cc +++ b/chrome/browser/ui/views/infobars/infobar_view.cc @@ -333,7 +333,7 @@ const infobars::InfoBarContainer::Delegate* InfoBarView::container_delegate() void InfoBarView::RunMenuAt(ui::MenuModel* menu_model, views::MenuButton* button, - views::MenuItemView::AnchorPosition anchor) { + views::MenuAnchorPosition anchor) { DCHECK(owner()); // We'd better not open any menus while we're closing. gfx::Point screen_point; views::View::ConvertPointToScreen(button, &screen_point); diff --git a/chrome/browser/ui/views/infobars/infobar_view.h b/chrome/browser/ui/views/infobars/infobar_view.h index 88034ac..40fb70b 100644 --- a/chrome/browser/ui/views/infobars/infobar_view.h +++ b/chrome/browser/ui/views/infobars/infobar_view.h @@ -11,7 +11,7 @@ #include "components/infobars/core/infobar_container.h" #include "third_party/skia/include/core/SkPath.h" #include "ui/views/controls/button/button.h" -#include "ui/views/controls/menu/menu_item_view.h" +#include "ui/views/controls/menu/menu_types.h" #include "ui/views/focus/external_focus_tracker.h" namespace ui { @@ -107,7 +107,7 @@ class InfoBarView : public infobars::InfoBar, // calls to RunMenu() in this case.) void RunMenuAt(ui::MenuModel* menu_model, views::MenuButton* button, - views::MenuItemView::AnchorPosition anchor); + views::MenuAnchorPosition anchor); private: // Does the actual work for AssignWidths(). Assumes |labels| is sorted by diff --git a/chrome/browser/ui/views/location_bar/page_action_image_view.cc b/chrome/browser/ui/views/location_bar/page_action_image_view.cc index fc77014..cfb05e3 100644 --- a/chrome/browser/ui/views/location_bar/page_action_image_view.cc +++ b/chrome/browser/ui/views/location_bar/page_action_image_view.cc @@ -26,7 +26,6 @@ #include "ui/events/event.h" #include "ui/gfx/canvas.h" #include "ui/gfx/image/image.h" -#include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/controls/menu/menu_runner.h" using content::WebContents; @@ -160,11 +159,16 @@ void PageActionImageView::ShowContextMenuForView( menu_runner_.reset(new views::MenuRunner(context_menu_model.get())); gfx::Point screen_loc; views::View::ConvertPointToScreen(this, &screen_loc); - if (menu_runner_->RunMenuAt(GetWidget(), NULL, gfx::Rect(screen_loc, size()), - views::MenuItemView::TOPLEFT, source_type, + if (menu_runner_->RunMenuAt( + GetWidget(), + NULL, + gfx::Rect(screen_loc, size()), + views::MENU_ANCHOR_TOPLEFT, + source_type, views::MenuRunner::HAS_MNEMONICS | views::MenuRunner::CONTEXT_MENU) == - views::MenuRunner::MENU_DELETED) + views::MenuRunner::MENU_DELETED) { return; + } } bool PageActionImageView::AcceleratorPressed( diff --git a/chrome/browser/ui/views/menu_model_adapter_test.cc b/chrome/browser/ui/views/menu_model_adapter_test.cc index 67ce9b7..7f861de 100644 --- a/chrome/browser/ui/views/menu_model_adapter_test.cc +++ b/chrome/browser/ui/views/menu_model_adapter_test.cc @@ -235,13 +235,12 @@ class MenuModelAdapterTest : public ViewEventTestBase, gfx::Point screen_location; views::View::ConvertPointToScreen(source, &screen_location); gfx::Rect bounds(screen_location, source->size()); - ignore_result(menu_runner_->RunMenuAt( - source->GetWidget(), - button_, - bounds, - views::MenuItemView::TOPLEFT, - ui::MENU_SOURCE_NONE, - views::MenuRunner::HAS_MNEMONICS)); + ignore_result(menu_runner_->RunMenuAt(source->GetWidget(), + button_, + bounds, + views::MENU_ANCHOR_TOPLEFT, + ui::MENU_SOURCE_NONE, + views::MenuRunner::HAS_MNEMONICS)); } // ViewEventTestBase implementation diff --git a/chrome/browser/ui/views/menu_test_base.cc b/chrome/browser/ui/views/menu_test_base.cc index 2128a1a..4937689 100644 --- a/chrome/browser/ui/views/menu_test_base.cc +++ b/chrome/browser/ui/views/menu_test_base.cc @@ -70,13 +70,12 @@ void MenuTestBase::OnMenuButtonClicked(views::View* source, gfx::Point screen_location; views::View::ConvertPointToScreen(source, &screen_location); gfx::Rect bounds(screen_location, source->size()); - ignore_result(menu_runner_->RunMenuAt( - source->GetWidget(), - button_, - bounds, - views::MenuItemView::TOPLEFT, - ui::MENU_SOURCE_NONE, - views::MenuRunner::HAS_MNEMONICS)); + ignore_result(menu_runner_->RunMenuAt(source->GetWidget(), + button_, + bounds, + views::MENU_ANCHOR_TOPLEFT, + ui::MENU_SOURCE_NONE, + views::MenuRunner::HAS_MNEMONICS)); } void MenuTestBase::ExecuteCommand(int id) { diff --git a/chrome/browser/ui/views/renderer_context_menu/render_view_context_menu_views.cc b/chrome/browser/ui/views/renderer_context_menu/render_view_context_menu_views.cc index 20edad9..c6187f9 100644 --- a/chrome/browser/ui/views/renderer_context_menu/render_view_context_menu_views.cc +++ b/chrome/browser/ui/views/renderer_context_menu/render_view_context_menu_views.cc @@ -44,10 +44,10 @@ RenderViewContextMenuViews* RenderViewContextMenuViews::Create( void RenderViewContextMenuViews::RunMenuAt(views::Widget* parent, const gfx::Point& point, ui::MenuSourceType type) { - views::MenuItemView::AnchorPosition anchor_position = - (type == ui::MENU_SOURCE_TOUCH || - type == ui::MENU_SOURCE_TOUCH_EDIT_MENU) ? - views::MenuItemView::BOTTOMCENTER : views::MenuItemView::TOPLEFT; + views::MenuAnchorPosition anchor_position = + (type == ui::MENU_SOURCE_TOUCH || type == ui::MENU_SOURCE_TOUCH_EDIT_MENU) + ? views::MENU_ANCHOR_BOTTOMCENTER + : views::MENU_ANCHOR_TOPLEFT; if (menu_runner_->RunMenuAt(parent, NULL, gfx::Rect(point, gfx::Size()), anchor_position, type, views::MenuRunner::HAS_MNEMONICS | diff --git a/chrome/browser/ui/views/status_icons/status_icon_win.cc b/chrome/browser/ui/views/status_icons/status_icon_win.cc index 6dd0f84..a99e44c 100644 --- a/chrome/browser/ui/views/status_icons/status_icon_win.cc +++ b/chrome/browser/ui/views/status_icons/status_icon_win.cc @@ -10,7 +10,7 @@ #include "third_party/skia/include/core/SkBitmap.h" #include "ui/gfx/icon_util.h" #include "ui/gfx/point.h" -#include "ui/views/controls/menu/menu_item_view.h" +#include "ui/gfx/rect.h" #include "ui/views/controls/menu/menu_runner.h" //////////////////////////////////////////////////////////////////////////////// @@ -61,9 +61,12 @@ void StatusIconWin::HandleClickEvent(const gfx::Point& cursor_pos, menu_runner_.reset(new views::MenuRunner(menu_model_)); - ignore_result(menu_runner_->RunMenuAt(NULL, NULL, - gfx::Rect(cursor_pos, gfx::Size()), views::MenuItemView::TOPLEFT, - ui::MENU_SOURCE_MOUSE, views::MenuRunner::HAS_MNEMONICS)); + ignore_result(menu_runner_->RunMenuAt(NULL, + NULL, + gfx::Rect(cursor_pos, gfx::Size()), + views::MENU_ANCHOR_TOPLEFT, + ui::MENU_SOURCE_MOUSE, + views::MenuRunner::HAS_MNEMONICS)); } void StatusIconWin::HandleBalloonClickEvent() { diff --git a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc index 75f8005..f88871d 100644 --- a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc +++ b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc @@ -42,7 +42,6 @@ #include "net/base/filename_util.h" #include "ui/base/models/list_selection_model.h" #include "ui/gfx/image/image.h" -#include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/controls/menu/menu_runner.h" #include "ui/views/widget/widget.h" @@ -121,13 +120,16 @@ class BrowserTabStripController::TabContextMenuContents } void RunMenuAt(const gfx::Point& point, ui::MenuSourceType source_type) { - if (menu_runner_->RunMenuAt( - tab_->GetWidget(), NULL, gfx::Rect(point, gfx::Size()), - views::MenuItemView::TOPLEFT, source_type, - views::MenuRunner::HAS_MNEMONICS | - views::MenuRunner::CONTEXT_MENU) == - views::MenuRunner::MENU_DELETED) + if (menu_runner_->RunMenuAt(tab_->GetWidget(), + NULL, + gfx::Rect(point, gfx::Size()), + views::MENU_ANCHOR_TOPLEFT, + source_type, + views::MenuRunner::HAS_MNEMONICS | + views::MenuRunner::CONTEXT_MENU) == + views::MenuRunner::MENU_DELETED) { return; + } } // Overridden from ui::SimpleMenuModel::Delegate: diff --git a/chrome/browser/ui/views/task_manager_view.cc b/chrome/browser/ui/views/task_manager_view.cc index 0216996..bddb7d4 100644 --- a/chrome/browser/ui/views/task_manager_view.cc +++ b/chrome/browser/ui/views/task_manager_view.cc @@ -594,11 +594,15 @@ void TaskManagerView::ShowContextMenuForView(views::View* source, menu_model.AddCheckItem(i->id, l10n_util::GetStringUTF16(i->id)); } menu_runner_.reset(new views::MenuRunner(&menu_model)); - if (menu_runner_->RunMenuAt(GetWidget(), NULL, gfx::Rect(point, gfx::Size()), - views::MenuItemView::TOPLEFT, source_type, + if (menu_runner_->RunMenuAt(GetWidget(), + NULL, + gfx::Rect(point, gfx::Size()), + views::MENU_ANCHOR_TOPLEFT, + source_type, views::MenuRunner::CONTEXT_MENU) == - views::MenuRunner::MENU_DELETED) + views::MenuRunner::MENU_DELETED) { return; + } } bool TaskManagerView::IsCommandIdChecked(int id) const { diff --git a/chrome/browser/ui/views/toolbar/browser_action_view.cc b/chrome/browser/ui/views/toolbar/browser_action_view.cc index 059fb7e..f45634f 100644 --- a/chrome/browser/ui/views/toolbar/browser_action_view.cc +++ b/chrome/browser/ui/views/toolbar/browser_action_view.cc @@ -28,6 +28,7 @@ #include "ui/gfx/image/image_skia.h" #include "ui/gfx/image/image_skia_operations.h" #include "ui/gfx/image/image_skia_source.h" +#include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/controls/menu/menu_runner.h" using extensions::Extension; @@ -186,8 +187,12 @@ void BrowserActionButton::ShowContextMenuForView( context_menu_ = menu_runner_->GetMenu(); gfx::Point screen_loc; views::View::ConvertPointToScreen(this, &screen_loc); - if (menu_runner_->RunMenuAt(GetWidget(), NULL, gfx::Rect(screen_loc, size()), - views::MenuItemView::TOPLEFT, source_type, + if (menu_runner_->RunMenuAt( + GetWidget(), + NULL, + gfx::Rect(screen_loc, size()), + views::MENU_ANCHOR_TOPLEFT, + source_type, views::MenuRunner::HAS_MNEMONICS | views::MenuRunner::CONTEXT_MENU) == views::MenuRunner::MENU_DELETED) { return; diff --git a/chrome/browser/ui/views/toolbar/toolbar_button.cc b/chrome/browser/ui/views/toolbar/toolbar_button.cc index bcbacd4..dad98d1 100644 --- a/chrome/browser/ui/views/toolbar/toolbar_button.cc +++ b/chrome/browser/ui/views/toolbar/toolbar_button.cc @@ -199,9 +199,10 @@ void ToolbarButton::ShowDropDownMenu(ui::MenuSourceType source_type) { menu_delegate.set_triggerable_event_flags(triggerable_event_flags()); menu_runner_.reset(new views::MenuRunner(menu_delegate.CreateMenu())); views::MenuRunner::RunResult result = - menu_runner_->RunMenuAt(GetWidget(), NULL, + menu_runner_->RunMenuAt(GetWidget(), + NULL, gfx::Rect(menu_position, gfx::Size(0, 0)), - views::MenuItemView::TOPLEFT, + views::MENU_ANCHOR_TOPLEFT, source_type, views::MenuRunner::HAS_MNEMONICS); if (result == views::MenuRunner::MENU_DELETED) @@ -211,9 +212,10 @@ void ToolbarButton::ShowDropDownMenu(ui::MenuSourceType source_type) { views::MenuItemView* menu = new views::MenuItemView(&menu_delegate); menu_runner_.reset(new views::MenuRunner(menu)); views::MenuRunner::RunResult result = - menu_runner_->RunMenuAt(GetWidget(), NULL, + menu_runner_->RunMenuAt(GetWidget(), + NULL, gfx::Rect(menu_position, gfx::Size(0, 0)), - views::MenuItemView::TOPLEFT, + views::MENU_ANCHOR_TOPLEFT, source_type, views::MenuRunner::HAS_MNEMONICS); if (result == views::MenuRunner::MENU_DELETED) diff --git a/chrome/browser/ui/views/toolbar/wrench_menu.cc b/chrome/browser/ui/views/toolbar/wrench_menu.cc index 28ee518..3db916d 100644 --- a/chrome/browser/ui/views/toolbar/wrench_menu.cc +++ b/chrome/browser/ui/views/toolbar/wrench_menu.cc @@ -952,9 +952,12 @@ void WrenchMenu::RunMenu(views::MenuButton* host) { views::View::ConvertPointToScreen(host, &screen_loc); gfx::Rect bounds(screen_loc, host->size()); content::RecordAction(UserMetricsAction("ShowAppMenu")); - if (menu_runner_->RunMenuAt(host->GetWidget(), host, bounds, - MenuItemView::TOPRIGHT, ui::MENU_SOURCE_NONE, - views::MenuRunner::HAS_MNEMONICS) == + if (menu_runner_->RunMenuAt(host->GetWidget(), + host, + bounds, + views::MENU_ANCHOR_TOPRIGHT, + ui::MENU_SOURCE_NONE, + views::MenuRunner::HAS_MNEMONICS) == views::MenuRunner::MENU_DELETED) return; if (bookmark_menu_delegate_.get()) { diff --git a/chrome/browser/ui/views/website_settings/permission_selector_view.cc b/chrome/browser/ui/views/website_settings/permission_selector_view.cc index 11319fd..e8d28b5a 100644 --- a/chrome/browser/ui/views/website_settings/permission_selector_view.cc +++ b/chrome/browser/ui/views/website_settings/permission_selector_view.cc @@ -117,14 +117,15 @@ void PermissionMenuButton::OnMenuButtonClicked(View* source, gfx::Point p(point); p.Offset(-source->width(), 0); - if (menu_runner_->RunMenuAt( - source->GetWidget()->GetTopLevelWidget(), - this, - gfx::Rect(p, gfx::Size()), - views::MenuItemView::TOPLEFT, - ui::MENU_SOURCE_NONE, - views::MenuRunner::HAS_MNEMONICS) == views::MenuRunner::MENU_DELETED) + if (menu_runner_->RunMenuAt(source->GetWidget()->GetTopLevelWidget(), + this, + gfx::Rect(p, gfx::Size()), + views::MENU_ANCHOR_TOPLEFT, + ui::MENU_SOURCE_NONE, + views::MenuRunner::HAS_MNEMONICS) == + views::MenuRunner::MENU_DELETED) { return; + } } } // namespace internal diff --git a/chrome/browser/ui/views/website_settings/permissions_bubble_view.cc b/chrome/browser/ui/views/website_settings/permissions_bubble_view.cc index 4960f48..589bac9 100644 --- a/chrome/browser/ui/views/website_settings/permissions_bubble_view.cc +++ b/chrome/browser/ui/views/website_settings/permissions_bubble_view.cc @@ -108,14 +108,15 @@ void PermissionCombobox::OnMenuButtonClicked(View* source, gfx::Point p(point); p.Offset(-source->width(), 0); - if (menu_runner_->RunMenuAt( - source->GetWidget()->GetTopLevelWidget(), - this, - gfx::Rect(p, gfx::Size()), - views::MenuItemView::TOPLEFT, - ui::MENU_SOURCE_NONE, - views::MenuRunner::HAS_MNEMONICS) == views::MenuRunner::MENU_DELETED) + if (menu_runner_->RunMenuAt(source->GetWidget()->GetTopLevelWidget(), + this, + gfx::Rect(p, gfx::Size()), + views::MENU_ANCHOR_TOPLEFT, + ui::MENU_SOURCE_NONE, + views::MenuRunner::HAS_MNEMONICS) == + views::MenuRunner::MENU_DELETED) { return; + } } void PermissionCombobox::PermissionChanged( diff --git a/content/shell/browser/shell_views.cc b/content/shell/browser/shell_views.cc index a2684b5..6bc61b1 100644 --- a/content/shell/browser/shell_views.cc +++ b/content/shell/browser/shell_views.cc @@ -24,7 +24,6 @@ #include "ui/views/controls/button/label_button.h" #include "ui/views/controls/button/menu_button.h" #include "ui/views/controls/button/menu_button_listener.h" -#include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/controls/menu/menu_runner.h" #include "ui/views/controls/textfield/textfield.h" #include "ui/views/controls/textfield/textfield_controller.h" @@ -189,11 +188,14 @@ class ShellWindowDelegateView : public views::WidgetDelegateView, new views::MenuRunner(context_menu_model_.get())); if (context_menu_runner_->RunMenuAt(web_view_->GetWidget(), - NULL, gfx::Rect(screen_point, gfx::Size()), - views::MenuItemView::TOPRIGHT, ui::MENU_SOURCE_NONE, - views::MenuRunner::CONTEXT_MENU) == - views::MenuRunner::MENU_DELETED) - return; + NULL, + gfx::Rect(screen_point, gfx::Size()), + views::MENU_ANCHOR_TOPRIGHT, + ui::MENU_SOURCE_NONE, + views::MenuRunner::CONTEXT_MENU) == + views::MenuRunner::MENU_DELETED) { + return; + } } void OnWebContentsFocused(content::WebContents* web_contents) { diff --git a/ui/app_list/views/app_list_item_view.cc b/ui/app_list/views/app_list_item_view.cc index 9ab2a5b..ceb0f13 100644 --- a/ui/app_list/views/app_list_item_view.cc +++ b/ui/app_list/views/app_list_item_view.cc @@ -29,7 +29,6 @@ #include "ui/gfx/transform_util.h" #include "ui/views/controls/image_view.h" #include "ui/views/controls/label.h" -#include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/controls/menu/menu_runner.h" #include "ui/views/drag_controller.h" @@ -328,12 +327,15 @@ void AppListItemView::ShowContextMenuForView(views::View* source, return; context_menu_runner_.reset(new views::MenuRunner(menu_model)); - if (context_menu_runner_->RunMenuAt( - GetWidget(), NULL, gfx::Rect(point, gfx::Size()), - views::MenuItemView::TOPLEFT, source_type, - views::MenuRunner::HAS_MNEMONICS) == - views::MenuRunner::MENU_DELETED) + if (context_menu_runner_->RunMenuAt(GetWidget(), + NULL, + gfx::Rect(point, gfx::Size()), + views::MENU_ANCHOR_TOPLEFT, + source_type, + views::MenuRunner::HAS_MNEMONICS) == + views::MenuRunner::MENU_DELETED) { return; + } } void AppListItemView::StateChanged() { diff --git a/ui/app_list/views/app_list_menu_views.cc b/ui/app_list/views/app_list_menu_views.cc index ee3e3e8..a920bdb 100644 --- a/ui/app_list/views/app_list_menu_views.cc +++ b/ui/app_list/views/app_list_menu_views.cc @@ -31,10 +31,12 @@ AppListMenuViews::~AppListMenuViews() {} void AppListMenuViews::RunMenuAt(views::MenuButton* button, const gfx::Point& point) { - ignore_result(menu_runner_->RunMenuAt(button->GetWidget(), button, + ignore_result(menu_runner_->RunMenuAt(button->GetWidget(), + button, gfx::Rect(point, gfx::Size()), - MenuItemView::TOPRIGHT, - ui::MENU_SOURCE_NONE, 0)); + views::MENU_ANCHOR_TOPRIGHT, + ui::MENU_SOURCE_NONE, + 0)); } void AppListMenuViews::Cancel() { diff --git a/ui/app_list/views/search_result_view.cc b/ui/app_list/views/search_result_view.cc index 861c8d0..3da0114 100644 --- a/ui/app_list/views/search_result_view.cc +++ b/ui/app_list/views/search_result_view.cc @@ -17,7 +17,6 @@ #include "ui/gfx/render_text.h" #include "ui/views/controls/button/image_button.h" #include "ui/views/controls/image_view.h" -#include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/controls/menu/menu_runner.h" namespace app_list { @@ -343,10 +342,12 @@ void SearchResultView::ShowContextMenuForView(views::View* source, return; context_menu_runner_.reset(new views::MenuRunner(menu_model)); - if (context_menu_runner_->RunMenuAt( - GetWidget(), NULL, gfx::Rect(point, gfx::Size()), - views::MenuItemView::TOPLEFT, source_type, - 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) == 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 6dcae7c..3edaa29 100644 --- a/ui/message_center/views/message_view_context_menu_controller.cc +++ b/ui/message_center/views/message_view_context_menu_controller.cc @@ -34,13 +34,12 @@ void MessageViewContextMenuController::ShowContextMenuForView( views::MenuRunner menu_runner(menu_model.get()); - ignore_result(menu_runner.RunMenuAt( - source->GetWidget()->GetTopLevelWidget(), - NULL, - gfx::Rect(point, gfx::Size()), - views::MenuItemView::TOPRIGHT, - source_type, - 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)); } } // namespace message_center diff --git a/ui/message_center/views/notifier_settings_view.cc b/ui/message_center/views/notifier_settings_view.cc index f4e5015..720b0763 100644 --- a/ui/message_center/views/notifier_settings_view.cc +++ b/ui/message_center/views/notifier_settings_view.cc @@ -713,7 +713,7 @@ void NotifierSettingsView::OnMenuButtonClicked(views::View* source, notifier_group_menu_runner_->RunMenuAt(GetWidget(), notifier_group_selector_, menu_anchor, - views::MenuItemView::BUBBLE_ABOVE, + views::MENU_ANCHOR_BUBBLE_ABOVE, ui::MENU_SOURCE_MOUSE, views::MenuRunner::CONTEXT_MENU)) return; diff --git a/ui/views/controls/combobox/combobox.cc b/ui/views/controls/combobox/combobox.cc index 8ce03b8..41cb16d 100644 --- a/ui/views/controls/combobox/combobox.cc +++ b/ui/views/controls/combobox/combobox.cc @@ -26,6 +26,7 @@ #include "ui/views/controls/button/label_button.h" #include "ui/views/controls/combobox/combobox_listener.h" #include "ui/views/controls/focusable_border.h" +#include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/controls/menu/menu_runner.h" #include "ui/views/controls/menu/menu_runner_handler.h" #include "ui/views/controls/menu/submenu_view.h" @@ -769,8 +770,8 @@ void Combobox::ShowDropDownMenu(ui::MenuSourceType source_type) { arrow_button_->SetState(Button::STATE_PRESSED); } dropdown_open_ = true; - MenuItemView::AnchorPosition anchor_position = - style_ == STYLE_ACTION ? MenuItemView::TOPRIGHT : MenuItemView::TOPLEFT; + 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) == diff --git a/ui/views/controls/combobox/combobox_unittest.cc b/ui/views/controls/combobox/combobox_unittest.cc index 15dd145..67625a2 100644 --- a/ui/views/controls/combobox/combobox_unittest.cc +++ b/ui/views/controls/combobox/combobox_unittest.cc @@ -38,7 +38,7 @@ class TestMenuRunnerHandler : public MenuRunnerHandler { virtual MenuRunner::RunResult RunMenuAt(Widget* parent, MenuButton* button, const gfx::Rect& bounds, - MenuItemView::AnchorPosition anchor, + MenuAnchorPosition anchor, ui::MenuSourceType source_type, int32 types) OVERRIDE { executed_ = true; diff --git a/ui/views/controls/menu/menu_controller.cc b/ui/views/controls/menu/menu_controller.cc index a63448d..f5d28ef 100644 --- a/ui/views/controls/menu/menu_controller.cc +++ b/ui/views/controls/menu/menu_controller.cc @@ -35,6 +35,7 @@ #include "ui/views/controls/menu/menu_config.h" #include "ui/views/controls/menu/menu_controller_delegate.h" #include "ui/views/controls/menu/menu_host_root_view.h" +#include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/controls/menu/menu_scroll_view_container.h" #include "ui/views/controls/menu/submenu_view.h" #include "ui/views/drag_utils.h" @@ -346,8 +347,9 @@ struct MenuController::SelectByCharDetails { MenuController::State::State() : item(NULL), submenu_open(false), - anchor(MenuItemView::TOPLEFT), - context_menu(false) {} + anchor(MENU_ANCHOR_TOPLEFT), + context_menu(false) { +} MenuController::State::~State() {} @@ -365,7 +367,7 @@ MenuItemView* MenuController::Run(Widget* parent, MenuButton* button, MenuItemView* root, const gfx::Rect& bounds, - MenuItemView::AnchorPosition position, + MenuAnchorPosition position, bool context_menu, int* result_event_flags) { exit_type_ = EXIT_NONE; @@ -1232,10 +1234,9 @@ MenuController::SendAcceleratorResultType ACCELERATOR_PROCESSED : ACCELERATOR_PROCESSED_EXIT; } -void MenuController::UpdateInitialLocation( - const gfx::Rect& bounds, - MenuItemView::AnchorPosition position, - bool context_menu) { +void MenuController::UpdateInitialLocation(const gfx::Rect& bounds, + MenuAnchorPosition position, + bool context_menu) { pending_state_.context_menu = context_menu; pending_state_.initial_bounds = bounds; if (bounds.height() > 1) { @@ -1246,10 +1247,10 @@ void MenuController::UpdateInitialLocation( // Reverse anchor position for RTL languages. if (base::i18n::IsRTL() && - (position == MenuItemView::TOPRIGHT || - position == MenuItemView::TOPLEFT)) { - pending_state_.anchor = position == MenuItemView::TOPRIGHT ? - MenuItemView::TOPLEFT : MenuItemView::TOPRIGHT; + (position == MENU_ANCHOR_TOPRIGHT || position == MENU_ANCHOR_TOPLEFT)) { + pending_state_.anchor = position == MENU_ANCHOR_TOPRIGHT + ? MENU_ANCHOR_TOPLEFT + : MENU_ANCHOR_TOPRIGHT; } else { pending_state_.anchor = position; } @@ -1305,7 +1306,7 @@ bool MenuController::ShowSiblingMenu(SubmenuView* source, // if there is a sibling menu we should show. gfx::Point screen_point(mouse_location); View::ConvertPointToScreen(source_view, &screen_point); - MenuItemView::AnchorPosition anchor; + MenuAnchorPosition anchor; bool has_mnemonics; MenuButton* button = NULL; MenuItemView* alt_menu = source->GetMenuItem()->GetDelegate()-> @@ -1729,11 +1730,11 @@ gfx::Rect MenuController::CalculateMenuBounds(MenuItemView* item, x += 1; y = state_.initial_bounds.bottom(); - if (state_.anchor == MenuItemView::TOPRIGHT) { + if (state_.anchor == MENU_ANCHOR_TOPRIGHT) { x = x + state_.initial_bounds.width() - pref.width(); if (menu_config.offset_context_menus && state_.context_menu) x -= 1; - } else if (state_.anchor == MenuItemView::BOTTOMCENTER) { + } else if (state_.anchor == MENU_ANCHOR_BOTTOMCENTER) { x = x - (pref.width() - state_.initial_bounds.width()) / 2; if (pref.height() > state_.initial_bounds.y() + kCenteredContextMenuYOffset) { @@ -1782,7 +1783,7 @@ gfx::Rect MenuController::CalculateMenuBounds(MenuItemView* item, // The menu should never overlap the owning button. So move it. // We use the anchor view style to determine the preferred position // relative to the owning button. - if (state_.anchor == MenuItemView::TOPLEFT) { + if (state_.anchor == MENU_ANCHOR_TOPLEFT) { // The menu starts with the same x coordinate as the owning button. if (x + state_.initial_bounds.width() + pref.width() > state_.monitor_bounds.right()) @@ -1895,16 +1896,16 @@ gfx::Rect MenuController::CalculateBubbleMenuBounds(MenuItemView* item, int max_height = state_.monitor_bounds.height(); // In case of bubbles, the maximum width is limited by the space // between the display corner and the target area + the tip size. - if (state_.anchor == MenuItemView::BUBBLE_LEFT) { + if (state_.anchor == MENU_ANCHOR_BUBBLE_LEFT) { max_width = owner_bounds.x() - state_.monitor_bounds.x() + kBubbleTipSizeLeftRight; - } else if (state_.anchor == MenuItemView::BUBBLE_RIGHT) { + } else if (state_.anchor == MENU_ANCHOR_BUBBLE_RIGHT) { max_width = state_.monitor_bounds.right() - owner_bounds.right() + kBubbleTipSizeLeftRight; - } else if (state_.anchor == MenuItemView::BUBBLE_ABOVE) { + } else if (state_.anchor == MENU_ANCHOR_BUBBLE_ABOVE) { max_height = owner_bounds.y() - state_.monitor_bounds.y() + kBubbleTipSizeTopBottom; - } else if (state_.anchor == MenuItemView::BUBBLE_BELOW) { + } else if (state_.anchor == MENU_ANCHOR_BUBBLE_BELOW) { max_height = state_.monitor_bounds.bottom() - owner_bounds.bottom() + kBubbleTipSizeTopBottom; } @@ -1919,9 +1920,9 @@ gfx::Rect MenuController::CalculateBubbleMenuBounds(MenuItemView* item, item->GetDelegate()->GetMaxWidthForMenu(item))); int x, y; - if (state_.anchor == MenuItemView::BUBBLE_ABOVE || - state_.anchor == MenuItemView::BUBBLE_BELOW) { - if (state_.anchor == MenuItemView::BUBBLE_ABOVE) + if (state_.anchor == MENU_ANCHOR_BUBBLE_ABOVE || + state_.anchor == MENU_ANCHOR_BUBBLE_BELOW) { + if (state_.anchor == MENU_ANCHOR_BUBBLE_ABOVE) y = owner_bounds.y() - pref.height() + kBubbleTipSizeTopBottom; else y = owner_bounds.bottom() - kBubbleTipSizeTopBottom; @@ -1936,7 +1937,7 @@ gfx::Rect MenuController::CalculateBubbleMenuBounds(MenuItemView* item, submenu->GetScrollViewContainer()->SetBubbleArrowOffset( pref.width() / 2 - x + x_old); } else { - if (state_.anchor == MenuItemView::BUBBLE_RIGHT) + if (state_.anchor == MENU_ANCHOR_BUBBLE_RIGHT) x = owner_bounds.right() - kBubbleTipSizeLeftRight; else x = owner_bounds.x() - pref.width() + kBubbleTipSizeLeftRight; diff --git a/ui/views/controls/menu/menu_controller.h b/ui/views/controls/menu/menu_controller.h index 0773060..5821eec 100644 --- a/ui/views/controls/menu/menu_controller.h +++ b/ui/views/controls/menu/menu_controller.h @@ -14,10 +14,11 @@ #include "base/compiler_specific.h" #include "base/memory/scoped_ptr.h" #include "base/timer/timer.h" +#include "ui/events/event.h" #include "ui/events/event_constants.h" #include "ui/events/platform/platform_event_dispatcher.h" +#include "ui/views/controls/menu/menu_config.h" #include "ui/views/controls/menu/menu_delegate.h" -#include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/widget/widget_observer.h" namespace base { @@ -35,6 +36,7 @@ namespace views { class MenuButton; class MenuHostRootView; +class MenuItemView; class MouseEvent; class SubmenuView; class View; @@ -79,7 +81,7 @@ class VIEWS_EXPORT MenuController : public WidgetObserver { MenuButton* button, MenuItemView* root, const gfx::Rect& bounds, - MenuItemView::AnchorPosition position, + MenuAnchorPosition position, bool context_menu, int* event_flags); @@ -90,7 +92,7 @@ class VIEWS_EXPORT MenuController : public WidgetObserver { bool drag_in_progress() const { return drag_in_progress_; } // Get the anchor position wich is used to show this menu. - MenuItemView::AnchorPosition GetAnchorPosition() { return state_.anchor; } + MenuAnchorPosition GetAnchorPosition() { return state_.anchor; } // Cancels the current Run. See ExitType for a description of what happens // with the various parameters. @@ -199,7 +201,7 @@ class VIEWS_EXPORT MenuController : public WidgetObserver { gfx::Rect initial_bounds; // Position of the initial menu. - MenuItemView::AnchorPosition anchor; + MenuAnchorPosition anchor; // The direction child menus have opened in. std::list<bool> open_leading; @@ -280,7 +282,7 @@ class VIEWS_EXPORT MenuController : public WidgetObserver { SendAcceleratorResultType SendAcceleratorToHotTrackedView(); void UpdateInitialLocation(const gfx::Rect& bounds, - MenuItemView::AnchorPosition position, + MenuAnchorPosition position, bool context_menu); // Invoked when the user accepts the selected item. This is only used diff --git a/ui/views/controls/menu/menu_delegate.cc b/ui/views/controls/menu/menu_delegate.cc index 699377f..3469023 100644 --- a/ui/views/controls/menu/menu_delegate.cc +++ b/ui/views/controls/menu/menu_delegate.cc @@ -2,9 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "ui/views/controls/menu/menu_config.h" #include "ui/views/controls/menu/menu_delegate.h" +#include "ui/events/event.h" +#include "ui/views/controls/menu/menu_config.h" + namespace views { MenuDelegate::~MenuDelegate() {} @@ -131,7 +133,7 @@ int MenuDelegate::GetDragOperations(MenuItemView* sender) { MenuItemView* MenuDelegate::GetSiblingMenu(MenuItemView* menu, const gfx::Point& screen_point, - MenuItemView::AnchorPosition* anchor, + MenuAnchorPosition* anchor, bool* has_mnemonics, MenuButton** button) { return NULL; diff --git a/ui/views/controls/menu/menu_delegate.h b/ui/views/controls/menu/menu_delegate.h index 37c2db80..24b708d 100644 --- a/ui/views/controls/menu/menu_delegate.h +++ b/ui/views/controls/menu/menu_delegate.h @@ -10,23 +10,29 @@ #include "base/logging.h" #include "base/strings/string16.h" +#include "third_party/skia/include/core/SkColor.h" #include "ui/base/dragdrop/drag_drop_types.h" #include "ui/base/dragdrop/os_exchange_data.h" -#include "ui/views/controls/menu/menu_item_view.h" +#include "ui/base/ui_base_types.h" +#include "ui/views/controls/menu/menu_types.h" +#include "ui/views/views_export.h" using ui::OSExchangeData; namespace gfx { class FontList; +class Point; } namespace ui { class Accelerator; +class DropTargetEvent; } namespace views { class MenuButton; +class MenuItemView; // MenuDelegate -------------------------------------------------------------- @@ -213,7 +219,7 @@ class VIEWS_EXPORT MenuDelegate { // The delegate owns the returned menu, not the controller. virtual MenuItemView* GetSiblingMenu(MenuItemView* menu, const gfx::Point& screen_point, - MenuItemView::AnchorPosition* anchor, + MenuAnchorPosition* anchor, bool* has_mnemonics, MenuButton** button); diff --git a/ui/views/controls/menu/menu_item_view.cc b/ui/views/controls/menu/menu_item_view.cc index 5f237c5..fc681fd 100644 --- a/ui/views/controls/menu/menu_item_view.cc +++ b/ui/views/controls/menu/menu_item_view.cc @@ -184,11 +184,11 @@ void MenuItemView::GetAccessibleState(ui::AXViewState* state) { } // static -bool MenuItemView::IsBubble(MenuItemView::AnchorPosition anchor) { - return anchor == MenuItemView::BUBBLE_LEFT || - anchor == MenuItemView::BUBBLE_RIGHT || - anchor == MenuItemView::BUBBLE_ABOVE || - anchor == MenuItemView::BUBBLE_BELOW; +bool MenuItemView::IsBubble(MenuAnchorPosition anchor) { + return anchor == MENU_ANCHOR_BUBBLE_LEFT || + anchor == MENU_ANCHOR_BUBBLE_RIGHT || + anchor == MENU_ANCHOR_BUBBLE_ABOVE || + anchor == MENU_ANCHOR_BUBBLE_BELOW; } // static diff --git a/ui/views/controls/menu/menu_item_view.h b/ui/views/controls/menu/menu_item_view.h index f228773..d52a951 100644 --- a/ui/views/controls/menu/menu_item_view.h +++ b/ui/views/controls/menu/menu_item_view.h @@ -15,6 +15,7 @@ #include "ui/base/models/menu_separator_types.h" #include "ui/gfx/image/image_skia.h" #include "ui/views/controls/menu/menu_config.h" +#include "ui/views/controls/menu/menu_types.h" #include "ui/views/view.h" #if defined(OS_WIN) @@ -83,21 +84,6 @@ class VIEWS_EXPORT MenuItemView : public View { EMPTY }; - // Where the menu should be anchored to for non-RTL languages. The - // opposite position will be used if base::i18n:IsRTL() is true. - // The BUBBLE flags are used when the menu should get enclosed by a bubble. - // Note that BUBBLE flags should only be used with menus which have no - // children. - enum AnchorPosition { - TOPLEFT, - TOPRIGHT, - BOTTOMCENTER, - BUBBLE_LEFT, - BUBBLE_RIGHT, - BUBBLE_ABOVE, - BUBBLE_BELOW - }; - // Where the menu should be drawn, above or below the bounds (when // the bounds is non-empty). POSITION_BEST_FIT (default) positions // the menu below the bounds unless the menu does not fit on the @@ -143,7 +129,7 @@ class VIEWS_EXPORT MenuItemView : public View { static int label_start() { return label_start_; } // Returns if a given |anchor| is a bubble or not. - static bool IsBubble(MenuItemView::AnchorPosition anchor); + static bool IsBubble(MenuAnchorPosition anchor); // Returns the accessible name to be used with screen readers. Mnemonics are // removed and the menu item accelerator text is appended. diff --git a/ui/views/controls/menu/menu_message_pump_dispatcher_win.cc b/ui/views/controls/menu/menu_message_pump_dispatcher_win.cc index 3fe74d3..cc53cd0 100644 --- a/ui/views/controls/menu/menu_message_pump_dispatcher_win.cc +++ b/ui/views/controls/menu/menu_message_pump_dispatcher_win.cc @@ -10,6 +10,7 @@ #include "ui/events/keycodes/keyboard_code_conversion.h" #include "ui/events/keycodes/keyboard_codes.h" #include "ui/views/controls/menu/menu_controller.h" +#include "ui/views/controls/menu/menu_item_view.h" namespace views { namespace internal { diff --git a/ui/views/controls/menu/menu_model_adapter.cc b/ui/views/controls/menu/menu_model_adapter.cc index fb6ea6a..51edb03 100644 --- a/ui/views/controls/menu/menu_model_adapter.cc +++ b/ui/views/controls/menu/menu_model_adapter.cc @@ -8,6 +8,7 @@ #include "ui/base/l10n/l10n_util.h" #include "ui/base/models/menu_model.h" #include "ui/gfx/image/image.h" +#include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/controls/menu/submenu_view.h" #include "ui/views/views_delegate.h" diff --git a/ui/views/controls/menu/menu_runner.cc b/ui/views/controls/menu/menu_runner.cc index 18b3fcd..ca36d02 100644 --- a/ui/views/controls/menu/menu_runner.cc +++ b/ui/views/controls/menu/menu_runner.cc @@ -12,6 +12,7 @@ #include "ui/views/controls/menu/menu_controller.h" #include "ui/views/controls/menu/menu_controller_delegate.h" #include "ui/views/controls/menu/menu_delegate.h" +#include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/controls/menu/menu_model_adapter.h" #include "ui/views/controls/menu/menu_runner_handler.h" #include "ui/views/widget/widget.h" @@ -43,7 +44,7 @@ class MenuRunnerImpl : public internal::MenuControllerDelegate { MenuRunner::RunResult RunMenuAt(Widget* parent, MenuButton* button, const gfx::Rect& bounds, - MenuItemView::AnchorPosition anchor, + MenuAnchorPosition anchor, int32 types) WARN_UNUSED_RESULT; void Cancel(); @@ -140,12 +141,11 @@ void MenuRunnerImpl::Release() { } } -MenuRunner::RunResult MenuRunnerImpl::RunMenuAt( - Widget* parent, - MenuButton* button, - const gfx::Rect& bounds, - MenuItemView::AnchorPosition anchor, - int32 types) { +MenuRunner::RunResult MenuRunnerImpl::RunMenuAt(Widget* parent, + MenuButton* button, + const gfx::Rect& bounds, + MenuAnchorPosition anchor, + int32 types) { closing_event_time_ = base::TimeDelta(); if (running_) { // Ignore requests to show the menu while it's already showing. MenuItemView @@ -300,7 +300,7 @@ MenuItemView* MenuRunner::GetMenu() { MenuRunner::RunResult MenuRunner::RunMenuAt(Widget* parent, MenuButton* button, const gfx::Rect& bounds, - MenuItemView::AnchorPosition anchor, + MenuAnchorPosition anchor, ui::MenuSourceType source_type, int32 types) { if (runner_handler_.get()) { @@ -321,11 +321,11 @@ MenuRunner::RunResult MenuRunner::RunMenuAt(Widget* parent, case ui::MENU_SOURCE_NONE: case ui::MENU_SOURCE_KEYBOARD: case ui::MENU_SOURCE_MOUSE: - anchor = MenuItemView::TOPLEFT; + anchor = MENU_ANCHOR_TOPLEFT; break; case ui::MENU_SOURCE_TOUCH: case ui::MENU_SOURCE_TOUCH_EDIT_MENU: - anchor = MenuItemView::BOTTOMCENTER; + anchor = MENU_ANCHOR_BOTTOMCENTER; break; default: break; diff --git a/ui/views/controls/menu/menu_runner.h b/ui/views/controls/menu/menu_runner.h index 6b46362..824afdf 100644 --- a/ui/views/controls/menu/menu_runner.h +++ b/ui/views/controls/menu/menu_runner.h @@ -8,7 +8,17 @@ #include "base/basictypes.h" #include "base/compiler_specific.h" #include "base/memory/scoped_ptr.h" -#include "ui/views/controls/menu/menu_item_view.h" +#include "ui/base/ui_base_types.h" +#include "ui/views/controls/menu/menu_types.h" +#include "ui/views/views_export.h" + +namespace base { +class TimeDelta; +} + +namespace gfx { +class Rect; +} namespace ui { class MenuModel; @@ -17,6 +27,7 @@ class MenuModel; namespace views { class MenuButton; +class MenuItemView; class MenuModelAdapter; class MenuRunnerHandler; class Widget; @@ -103,7 +114,7 @@ class VIEWS_EXPORT MenuRunner { RunResult RunMenuAt(Widget* parent, MenuButton* button, const gfx::Rect& bounds, - MenuItemView::AnchorPosition anchor, + MenuAnchorPosition anchor, ui::MenuSourceType source_type, int32 types) WARN_UNUSED_RESULT; diff --git a/ui/views/controls/menu/menu_runner_handler.h b/ui/views/controls/menu/menu_runner_handler.h index 46f801a..47d75c8 100644 --- a/ui/views/controls/menu/menu_runner_handler.h +++ b/ui/views/controls/menu/menu_runner_handler.h @@ -6,11 +6,11 @@ #define UI_VIEWS_CONTROLS_MENU_MENU_RUNNER_HANDLER_H_ #include "base/basictypes.h" -#include "ui/views/controls/menu/menu_item_view.h" namespace views { class MenuButton; +class MenuItemView; class Widget; // Used internally by MenuRunner to show the menu. Can be set in tests (see @@ -21,7 +21,7 @@ class VIEWS_EXPORT MenuRunnerHandler { virtual MenuRunner::RunResult RunMenuAt(Widget* parent, MenuButton* button, const gfx::Rect& bounds, - MenuItemView::AnchorPosition anchor, + MenuAnchorPosition anchor, ui::MenuSourceType source_type, int32 types) = 0; }; diff --git a/ui/views/controls/menu/menu_scroll_view_container.cc b/ui/views/controls/menu/menu_scroll_view_container.cc index ea02917..1712fba 100644 --- a/ui/views/controls/menu/menu_scroll_view_container.cc +++ b/ui/views/controls/menu/menu_scroll_view_container.cc @@ -315,17 +315,16 @@ void MenuScrollViewContainer::CreateBubbleBorder() { set_background(new BubbleBackground(bubble_border_)); } -BubbleBorder::Arrow -MenuScrollViewContainer::BubbleBorderTypeFromAnchor( - MenuItemView::AnchorPosition anchor) { +BubbleBorder::Arrow MenuScrollViewContainer::BubbleBorderTypeFromAnchor( + MenuAnchorPosition anchor) { switch (anchor) { - case views::MenuItemView::BUBBLE_LEFT: + case MENU_ANCHOR_BUBBLE_LEFT: return BubbleBorder::RIGHT_CENTER; - case views::MenuItemView::BUBBLE_RIGHT: + case MENU_ANCHOR_BUBBLE_RIGHT: return BubbleBorder::LEFT_CENTER; - case views::MenuItemView::BUBBLE_ABOVE: + case MENU_ANCHOR_BUBBLE_ABOVE: return BubbleBorder::BOTTOM_CENTER; - case views::MenuItemView::BUBBLE_BELOW: + case MENU_ANCHOR_BUBBLE_BELOW: return BubbleBorder::TOP_CENTER; default: return BubbleBorder::NONE; diff --git a/ui/views/controls/menu/menu_scroll_view_container.h b/ui/views/controls/menu/menu_scroll_view_container.h index dbd9764..a2611ab 100644 --- a/ui/views/controls/menu/menu_scroll_view_container.h +++ b/ui/views/controls/menu/menu_scroll_view_container.h @@ -7,7 +7,7 @@ #include "ui/views/view.h" #include "ui/views/bubble/bubble_border.h" -#include "ui/views/controls/menu/menu_item_view.h" +#include "ui/views/controls/menu/menu_types.h" namespace views { @@ -47,8 +47,7 @@ class MenuScrollViewContainer : public View { // Create the bubble border. void CreateBubbleBorder(); - BubbleBorder::Arrow BubbleBorderTypeFromAnchor( - MenuItemView::AnchorPosition anchor); + BubbleBorder::Arrow BubbleBorderTypeFromAnchor(MenuAnchorPosition anchor); class MenuScrollView; diff --git a/ui/views/controls/menu/menu_types.h b/ui/views/controls/menu/menu_types.h new file mode 100644 index 0000000..160dd5a --- /dev/null +++ b/ui/views/controls/menu/menu_types.h @@ -0,0 +1,26 @@ +// Copyright 2014 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 UI_VIEWS_CONTROLS_MENU_MENU_TYPES_H_ +#define UI_VIEWS_CONTROLS_MENU_MENU_TYPES_H_ + +namespace views { + +// Where a popup menu should be anchored to for non-RTL languages. The opposite +// position will be used if base::i18n:IsRTL() is true. The BUBBLE flags are +// used when the menu should get enclosed by a bubble. Note that BUBBLE flags +// should only be used with menus which have no children. +enum MenuAnchorPosition { + MENU_ANCHOR_TOPLEFT, + MENU_ANCHOR_TOPRIGHT, + MENU_ANCHOR_BOTTOMCENTER, + MENU_ANCHOR_BUBBLE_LEFT, + MENU_ANCHOR_BUBBLE_RIGHT, + MENU_ANCHOR_BUBBLE_ABOVE, + MENU_ANCHOR_BUBBLE_BELOW +}; + +} // namespace views + +#endif // UI_VIEWS_CONTROLS_MENU_MENU_TYPES_H_ diff --git a/ui/views/controls/menu/submenu_view.cc b/ui/views/controls/menu/submenu_view.cc index c8016c0..2b59507 100644 --- a/ui/views/controls/menu/submenu_view.cc +++ b/ui/views/controls/menu/submenu_view.cc @@ -14,6 +14,7 @@ #include "ui/views/controls/menu/menu_config.h" #include "ui/views/controls/menu/menu_controller.h" #include "ui/views/controls/menu/menu_host.h" +#include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/controls/menu/menu_scroll_view_container.h" #include "ui/views/widget/root_view.h" #include "ui/views/widget/widget.h" diff --git a/ui/views/controls/scrollbar/base_scroll_bar.cc b/ui/views/controls/scrollbar/base_scroll_bar.cc index 99ec75a..5e4d6a5 100644 --- a/ui/views/controls/scrollbar/base_scroll_bar.cc +++ b/ui/views/controls/scrollbar/base_scroll_bar.cc @@ -305,11 +305,16 @@ 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()), - views::MenuItemView::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::HAS_MNEMONICS | views::MenuRunner::CONTEXT_MENU) == + MenuRunner::MENU_DELETED) { return; + } } /////////////////////////////////////////////////////////////////////////////// diff --git a/ui/views/controls/textfield/textfield.cc b/ui/views/controls/textfield/textfield.cc index 29fa9c8..9b20f0c 100644 --- a/ui/views/controls/textfield/textfield.cc +++ b/ui/views/controls/textfield/textfield.cc @@ -25,7 +25,6 @@ #include "ui/views/background.h" #include "ui/views/controls/focusable_border.h" #include "ui/views/controls/label.h" -#include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/controls/menu/menu_runner.h" #include "ui/views/controls/native/native_view_host.h" #include "ui/views/controls/textfield/textfield_controller.h" @@ -925,8 +924,12 @@ 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()), MenuItemView::TOPLEFT, source_type, + ignore_result(context_menu_runner_->RunMenuAt( + GetWidget(), + NULL, + gfx::Rect(point, gfx::Size()), + MENU_ANCHOR_TOPLEFT, + source_type, MenuRunner::HAS_MNEMONICS | MenuRunner::CONTEXT_MENU)); } diff --git a/ui/views/examples/menu_example.cc b/ui/views/examples/menu_example.cc index bd9ea48..742cfff 100644 --- a/ui/views/examples/menu_example.cc +++ b/ui/views/examples/menu_example.cc @@ -189,11 +189,15 @@ void ExampleMenuButton::OnMenuButtonClicked(View* source, const gfx::Point& point) { menu_runner_.reset(new MenuRunner(GetMenuModel())); - if (menu_runner_->RunMenuAt(source->GetWidget()->GetTopLevelWidget(), this, - gfx::Rect(point, gfx::Size()), MenuItemView::TOPRIGHT, - ui::MENU_SOURCE_NONE, MenuRunner::HAS_MNEMONICS) == - MenuRunner::MENU_DELETED) + if (menu_runner_->RunMenuAt(source->GetWidget()->GetTopLevelWidget(), + this, + gfx::Rect(point, gfx::Size()), + MENU_ANCHOR_TOPRIGHT, + ui::MENU_SOURCE_NONE, + MenuRunner::HAS_MNEMONICS) == + MenuRunner::MENU_DELETED) { return; + } } ui::SimpleMenuModel* ExampleMenuButton::GetMenuModel() { diff --git a/ui/views/examples/tree_view_example.cc b/ui/views/examples/tree_view_example.cc index e7cce32..2f6cc4c 100644 --- a/ui/views/examples/tree_view_example.cc +++ b/ui/views/examples/tree_view_example.cc @@ -132,10 +132,14 @@ void TreeViewExample::ShowContextMenuForView(View* source, 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)); - if (context_menu_runner_->RunMenuAt(source->GetWidget(), NULL, - gfx::Rect(point, gfx::Size()), MenuItemView::TOPLEFT, source_type, 0) == - MenuRunner::MENU_DELETED) + if (context_menu_runner_->RunMenuAt(source->GetWidget(), + NULL, + gfx::Rect(point, gfx::Size()), + MENU_ANCHOR_TOPLEFT, + source_type, + 0) == MenuRunner::MENU_DELETED) { return; + } } bool TreeViewExample::IsCommandIdChecked(int command_id) const { diff --git a/ui/views/views.gyp b/ui/views/views.gyp index ff3eb32..72be3f4 100644 --- a/ui/views/views.gyp +++ b/ui/views/views.gyp @@ -154,6 +154,7 @@ 'controls/menu/menu_separator.h', 'controls/menu/menu_separator_views.cc', 'controls/menu/menu_separator_win.cc', + 'controls/menu/menu_types.h', 'controls/menu/menu_wrapper.h', 'controls/menu/native_menu_win.cc', 'controls/menu/native_menu_win.h', diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc index 2bc65f0..cfc6d59 100644 --- a/ui/views/widget/widget.cc +++ b/ui/views/widget/widget.cc @@ -16,6 +16,7 @@ #include "ui/compositor/compositor.h" #include "ui/compositor/layer.h" #include "ui/events/event.h" +#include "ui/gfx/image/image_skia.h" #include "ui/gfx/screen.h" #include "ui/views/controls/menu/menu_controller.h" #include "ui/views/focus/focus_manager.h" |