OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/toolbar/toolbar_button.h" | 5 #include "chrome/browser/ui/views/toolbar/toolbar_button.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "chrome/browser/ui/views/location_bar/location_bar_view.h" | 8 #include "chrome/browser/ui/views/location_bar/location_bar_view.h" |
9 #include "grit/theme_resources.h" | 9 #include "grit/theme_resources.h" |
10 #include "grit/ui_strings.h" | 10 #include "grit/ui_strings.h" |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
206 | 206 |
207 // Make the button look depressed while the menu is open. | 207 // Make the button look depressed while the menu is open. |
208 SetState(STATE_PRESSED); | 208 SetState(STATE_PRESSED); |
209 | 209 |
210 menu_showing_ = true; | 210 menu_showing_ = true; |
211 | 211 |
212 // Create and run menu. Display an empty menu if model is NULL. | 212 // Create and run menu. Display an empty menu if model is NULL. |
213 if (model_.get()) { | 213 if (model_.get()) { |
214 views::MenuModelAdapter menu_delegate(model_.get()); | 214 views::MenuModelAdapter menu_delegate(model_.get()); |
215 menu_delegate.set_triggerable_event_flags(triggerable_event_flags()); | 215 menu_delegate.set_triggerable_event_flags(triggerable_event_flags()); |
216 menu_runner_.reset(new views::MenuRunner(menu_delegate.CreateMenu())); | 216 menu_runner_.reset(new views::MenuRunner(menu_delegate.CreateMenu(), |
| 217 views::MenuRunner::HAS_MNEMONICS)); |
217 views::MenuRunner::RunResult result = | 218 views::MenuRunner::RunResult result = |
218 menu_runner_->RunMenuAt(GetWidget(), | 219 menu_runner_->RunMenuAt(GetWidget(), |
219 NULL, | 220 NULL, |
220 gfx::Rect(menu_position, gfx::Size(0, 0)), | 221 gfx::Rect(menu_position, gfx::Size(0, 0)), |
221 views::MENU_ANCHOR_TOPLEFT, | 222 views::MENU_ANCHOR_TOPLEFT, |
222 source_type, | 223 source_type); |
223 views::MenuRunner::HAS_MNEMONICS); | |
224 if (result == views::MenuRunner::MENU_DELETED) | 224 if (result == views::MenuRunner::MENU_DELETED) |
225 return; | 225 return; |
226 } else { | 226 } else { |
227 views::MenuDelegate menu_delegate; | 227 views::MenuDelegate menu_delegate; |
228 views::MenuItemView* menu = new views::MenuItemView(&menu_delegate); | 228 views::MenuItemView* menu = new views::MenuItemView(&menu_delegate); |
229 menu_runner_.reset(new views::MenuRunner(menu)); | 229 menu_runner_.reset( |
| 230 new views::MenuRunner(menu, views::MenuRunner::HAS_MNEMONICS)); |
230 views::MenuRunner::RunResult result = | 231 views::MenuRunner::RunResult result = |
231 menu_runner_->RunMenuAt(GetWidget(), | 232 menu_runner_->RunMenuAt(GetWidget(), |
232 NULL, | 233 NULL, |
233 gfx::Rect(menu_position, gfx::Size(0, 0)), | 234 gfx::Rect(menu_position, gfx::Size(0, 0)), |
234 views::MENU_ANCHOR_TOPLEFT, | 235 views::MENU_ANCHOR_TOPLEFT, |
235 source_type, | 236 source_type); |
236 views::MenuRunner::HAS_MNEMONICS); | |
237 if (result == views::MenuRunner::MENU_DELETED) | 237 if (result == views::MenuRunner::MENU_DELETED) |
238 return; | 238 return; |
239 } | 239 } |
240 | 240 |
241 menu_showing_ = false; | 241 menu_showing_ = false; |
242 | 242 |
243 // Need to explicitly clear mouse handler so that events get sent | 243 // Need to explicitly clear mouse handler so that events get sent |
244 // properly after the menu finishes running. If we don't do this, then | 244 // properly after the menu finishes running. If we don't do this, then |
245 // the first click to other parts of the UI is eaten. | 245 // the first click to other parts of the UI is eaten. |
246 SetMouseHandler(NULL); | 246 SetMouseHandler(NULL); |
247 | 247 |
248 // Set the state back to normal after the drop down menu is closed. | 248 // Set the state back to normal after the drop down menu is closed. |
249 if (state_ != STATE_DISABLED) | 249 if (state_ != STATE_DISABLED) |
250 SetState(STATE_NORMAL); | 250 SetState(STATE_NORMAL); |
251 } | 251 } |
OLD | NEW |