| OLD | NEW |
| 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/run_loop.h" | 9 #include "base/run_loop.h" |
| 10 #include "base/time.h" | 10 #include "base/time.h" |
| (...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 499 } | 499 } |
| 500 | 500 |
| 501 #if defined(OS_LINUX) | 501 #if defined(OS_LINUX) |
| 502 bool MenuController::OnMouseWheel(SubmenuView* source, | 502 bool MenuController::OnMouseWheel(SubmenuView* source, |
| 503 const ui::MouseWheelEvent& event) { | 503 const ui::MouseWheelEvent& event) { |
| 504 MenuPart part = GetMenuPart(source, event.location()); | 504 MenuPart part = GetMenuPart(source, event.location()); |
| 505 return part.submenu && part.submenu->OnMouseWheel(event); | 505 return part.submenu && part.submenu->OnMouseWheel(event); |
| 506 } | 506 } |
| 507 #endif | 507 #endif |
| 508 | 508 |
| 509 ui::EventResult MenuController::OnGestureEvent( | 509 void MenuController::OnGestureEvent(SubmenuView* source, |
| 510 SubmenuView* source, | 510 ui::GestureEvent* event) { |
| 511 ui::GestureEvent* event) { | |
| 512 MenuPart part = GetMenuPart(source, event->location()); | 511 MenuPart part = GetMenuPart(source, event->location()); |
| 513 if (event->type() == ui::ET_GESTURE_TAP_DOWN) { | 512 if (event->type() == ui::ET_GESTURE_TAP_DOWN) { |
| 514 SetSelectionOnPointerDown(source, *event); | 513 SetSelectionOnPointerDown(source, *event); |
| 515 return ui::ER_CONSUMED; | 514 event->StopPropagation(); |
| 516 } else if (event->type() == ui::ET_GESTURE_LONG_PRESS) { | 515 } else if (event->type() == ui::ET_GESTURE_LONG_PRESS) { |
| 517 if (part.type == MenuPart::MENU_ITEM && part.menu) { | 516 if (part.type == MenuPart::MENU_ITEM && part.menu) { |
| 518 if (ShowContextMenu(part.menu, source, *event)) | 517 if (ShowContextMenu(part.menu, source, *event)) |
| 519 return ui::ER_CONSUMED; | 518 event->StopPropagation(); |
| 520 } | 519 } |
| 521 } else if (event->type() == ui::ET_GESTURE_TAP) { | 520 } else if (event->type() == ui::ET_GESTURE_TAP) { |
| 522 if (!part.is_scroll() && part.menu && | 521 if (!part.is_scroll() && part.menu && |
| 523 !(part.menu->HasSubmenu())) { | 522 !(part.menu->HasSubmenu())) { |
| 524 if (part.menu->GetDelegate()->IsTriggerableEvent( | 523 if (part.menu->GetDelegate()->IsTriggerableEvent( |
| 525 part.menu, *event)) { | 524 part.menu, *event)) { |
| 526 Accept(part.menu, 0); | 525 Accept(part.menu, 0); |
| 527 } | 526 } |
| 528 return ui::ER_CONSUMED; | 527 event->StopPropagation(); |
| 529 } else if (part.type == MenuPart::MENU_ITEM) { | 528 } else if (part.type == MenuPart::MENU_ITEM) { |
| 530 // User either tapped on empty space, or a menu that has children. | 529 // User either tapped on empty space, or a menu that has children. |
| 531 SetSelection(part.menu ? part.menu : state_.item, | 530 SetSelection(part.menu ? part.menu : state_.item, |
| 532 SELECTION_OPEN_SUBMENU | SELECTION_UPDATE_IMMEDIATELY); | 531 SELECTION_OPEN_SUBMENU | SELECTION_UPDATE_IMMEDIATELY); |
| 533 return ui::ER_CONSUMED; | 532 event->StopPropagation(); |
| 534 } | 533 } |
| 535 } | 534 } |
| 535 if (event->stopped_propagation()) |
| 536 return; |
| 537 |
| 536 if (!part.submenu) | 538 if (!part.submenu) |
| 537 return ui::ER_UNHANDLED; | 539 return; |
| 538 return part.submenu->OnGestureEvent(event); | 540 part.submenu->OnGestureEvent(event); |
| 539 } | 541 } |
| 540 | 542 |
| 541 bool MenuController::GetDropFormats( | 543 bool MenuController::GetDropFormats( |
| 542 SubmenuView* source, | 544 SubmenuView* source, |
| 543 int* formats, | 545 int* formats, |
| 544 std::set<OSExchangeData::CustomFormat>* custom_formats) { | 546 std::set<OSExchangeData::CustomFormat>* custom_formats) { |
| 545 return source->GetMenuItem()->GetDelegate()->GetDropFormats( | 547 return source->GetMenuItem()->GetDelegate()->GetDropFormats( |
| 546 source->GetMenuItem(), formats, custom_formats); | 548 source->GetMenuItem(), formats, custom_formats); |
| 547 } | 549 } |
| 548 | 550 |
| (...skipping 1561 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2110 (!pending_state_.item->HasSubmenu() || | 2112 (!pending_state_.item->HasSubmenu() || |
| 2111 !pending_state_.item->GetSubmenu()->IsShowing())) { | 2113 !pending_state_.item->GetSubmenu()->IsShowing())) { |
| 2112 // On exit if the user hasn't selected an item with a submenu, move the | 2114 // On exit if the user hasn't selected an item with a submenu, move the |
| 2113 // selection back to the parent menu item. | 2115 // selection back to the parent menu item. |
| 2114 SetSelection(pending_state_.item->GetParentMenuItem(), | 2116 SetSelection(pending_state_.item->GetParentMenuItem(), |
| 2115 SELECTION_OPEN_SUBMENU); | 2117 SELECTION_OPEN_SUBMENU); |
| 2116 } | 2118 } |
| 2117 } | 2119 } |
| 2118 | 2120 |
| 2119 } // namespace views | 2121 } // namespace views |
| OLD | NEW |