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

Side by Side Diff: ui/views/controls/menu/menu_controller.cc

Issue 2790773002: Cleanup MenuRunner API (Closed)
Patch Set: Rebase Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/views/controls/menu/menu_controller.h" 5 #include "ui/views/controls/menu/menu_controller.h"
6 6
7 #include "base/i18n/case_conversion.h" 7 #include "base/i18n/case_conversion.h"
8 #include "base/i18n/rtl.h" 8 #include "base/i18n/rtl.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 // MenuController ------------------------------------------------------------ 400 // MenuController ------------------------------------------------------------
401 401
402 // static 402 // static
403 MenuController* MenuController::active_instance_ = NULL; 403 MenuController* MenuController::active_instance_ = NULL;
404 404
405 // static 405 // static
406 MenuController* MenuController::GetActiveInstance() { 406 MenuController* MenuController::GetActiveInstance() {
407 return active_instance_; 407 return active_instance_;
408 } 408 }
409 409
410 MenuItemView* MenuController::Run(Widget* parent, 410 void MenuController::Run(Widget* parent,
411 MenuButton* button, 411 MenuButton* button,
412 MenuItemView* root, 412 MenuItemView* root,
413 const gfx::Rect& bounds, 413 const gfx::Rect& bounds,
414 MenuAnchorPosition position, 414 MenuAnchorPosition position,
415 bool context_menu, 415 bool context_menu,
416 bool is_nested_drag, 416 bool is_nested_drag) {
417 int* result_event_flags) {
418 exit_type_ = EXIT_NONE; 417 exit_type_ = EXIT_NONE;
419 possible_drag_ = false; 418 possible_drag_ = false;
420 drag_in_progress_ = false; 419 drag_in_progress_ = false;
421 did_initiate_drag_ = false; 420 did_initiate_drag_ = false;
422 closing_event_time_ = base::TimeTicks(); 421 closing_event_time_ = base::TimeTicks();
423 menu_start_time_ = base::TimeTicks::Now(); 422 menu_start_time_ = base::TimeTicks::Now();
424 menu_start_mouse_press_loc_ = gfx::Point(); 423 menu_start_mouse_press_loc_ = gfx::Point();
425 424
426 if (parent) { 425 if (parent) {
427 View* root_view = parent->GetRootView(); 426 View* root_view = parent->GetRootView();
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
475 474
476 // Set the selection, which opens the initial menu. 475 // Set the selection, which opens the initial menu.
477 SetSelection(root, SELECTION_OPEN_SUBMENU | SELECTION_UPDATE_IMMEDIATELY); 476 SetSelection(root, SELECTION_OPEN_SUBMENU | SELECTION_UPDATE_IMMEDIATELY);
478 477
479 if (!blocking_run_) { 478 if (!blocking_run_) {
480 if (!is_nested_drag) { 479 if (!is_nested_drag) {
481 // Start the timer to hide the menu. This is needed as we get no 480 // Start the timer to hide the menu. This is needed as we get no
482 // notification when the drag has finished. 481 // notification when the drag has finished.
483 StartCancelAllTimer(); 482 StartCancelAllTimer();
484 } 483 }
485 return NULL; 484 return;
486 } 485 }
487 486
488 if (button) 487 if (button)
489 pressed_lock_.reset(new MenuButton::PressedLock(button)); 488 pressed_lock_.reset(new MenuButton::PressedLock(button));
490 489
491 // Make sure Chrome doesn't attempt to shut down while the menu is showing. 490 // Make sure Chrome doesn't attempt to shut down while the menu is showing.
492 if (ViewsDelegate::GetInstance()) 491 if (ViewsDelegate::GetInstance())
493 ViewsDelegate::GetInstance()->AddRef(); 492 ViewsDelegate::GetInstance()->AddRef();
494
495 return nullptr;
496 } 493 }
497 494
498 void MenuController::Cancel(ExitType type) { 495 void MenuController::Cancel(ExitType type) {
499 // If the menu has already been destroyed, no further cancellation is 496 // If the menu has already been destroyed, no further cancellation is
500 // needed. We especially don't want to set the |exit_type_| to a lesser 497 // needed. We especially don't want to set the |exit_type_| to a lesser
501 // value. 498 // value.
502 if (exit_type_ == EXIT_DESTROYED || exit_type_ == type) 499 if (exit_type_ == EXIT_DESTROYED || exit_type_ == type)
503 return; 500 return;
504 501
505 if (!showing_) { 502 if (!showing_) {
(...skipping 2208 matching lines...) Expand 10 before | Expand all | Expand 10 after
2714 if (hot_button_) 2711 if (hot_button_)
2715 hot_button_->SetHotTracked(false); 2712 hot_button_->SetHotTracked(false);
2716 hot_button_ = hot_button; 2713 hot_button_ = hot_button;
2717 if (hot_button) { 2714 if (hot_button) {
2718 hot_button->SetHotTracked(true); 2715 hot_button->SetHotTracked(true);
2719 hot_button->NotifyAccessibilityEvent(ui::AX_EVENT_SELECTION, true); 2716 hot_button->NotifyAccessibilityEvent(ui::AX_EVENT_SELECTION, true);
2720 } 2717 }
2721 } 2718 }
2722 2719
2723 } // namespace views 2720 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/menu/menu_controller.h ('k') | ui/views/controls/menu/menu_controller_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698