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

Unified Diff: ui/views/controls/menu/menu_controller.cc

Issue 10832360: Change to address default selection of menu item (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: ui/views/controls/menu/menu_controller.cc
diff --git a/ui/views/controls/menu/menu_controller.cc b/ui/views/controls/menu/menu_controller.cc
index 5364b83da55b3c6fe23fe56fc1c580795fee83be..fd61014567cb7c079c86c6b9ddfbc16d47d73540 100644
--- a/ui/views/controls/menu/menu_controller.cc
+++ b/ui/views/controls/menu/menu_controller.cc
@@ -1184,7 +1184,8 @@ bool MenuController::ShowSiblingMenu(SubmenuView* source,
anchor);
alt_menu->PrepareForRun(
has_mnemonics,
- source->GetMenuItem()->GetRootMenuItem()->show_mnemonics_);
+ source->GetMenuItem()->GetRootMenuItem()->show_mnemonics_,
+ false);
alt_menu->controller_ = this;
SetSelection(alt_menu, SELECTION_OPEN_SUBMENU | SELECTION_UPDATE_IMMEDIATELY);
return true;
@@ -1550,9 +1551,16 @@ gfx::Rect MenuController::CalculateMenuBounds(MenuItemView* item,
if (!item->GetParentMenuItem()) {
// First item, position relative to initial location.
x = state_.initial_bounds.x();
+ // Offsets for context menu prevent menu items being selected by
+ // simply opening the menu (bug 142992)
+ if(item->is_root_context_menu())
+ x += 1;
y = state_.initial_bounds.bottom();
- if (state_.anchor == MenuItemView::TOPRIGHT)
+ if (state_.anchor == MenuItemView::TOPRIGHT) {
x = x + state_.initial_bounds.width() - pref.width();
+ if(item->is_root_context_menu())
+ x -= 1;
+ }
if (!state_.monitor_bounds.IsEmpty() &&
y + pref.height() > state_.monitor_bounds.bottom()) {
@@ -1669,10 +1677,20 @@ gfx::Rect MenuController::CalculateMenuBounds(MenuItemView* item,
}
if (state_.monitor_bounds.width() != 0) {
- if (x + pref.width() > state_.monitor_bounds.right())
- x = state_.monitor_bounds.right() - pref.width();
- if (x < state_.monitor_bounds.x())
- x = state_.monitor_bounds.x();
+ if (x + pref.width() > state_.monitor_bounds.right()) {
+ if(item->is_root_context_menu())
+ x -= pref.width() + 1;
+ else
+ x = state_.monitor_bounds.right() - pref.width();
+ }
+ if (x < state_.monitor_bounds.x()) {
+ int temp_loc = state_.initial_bounds.x() + 1;
+ if(item->is_root_context_menu() && temp_loc >= state_.monitor_bounds.x()
+ && temp_loc + pref.width() < state_.monitor_bounds.right())
+ x = temp_loc;
+ else
+ x = state_.monitor_bounds.x();
+ }
}
return gfx::Rect(x, y, pref.width(), pref.height());
}

Powered by Google App Engine
This is Rietveld 408576698