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

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

Issue 7057014: Variety of tweaks to View API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « views/controls/link.cc ('k') | views/controls/menu/menu_item_view.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "views/controls/menu/menu_controller.h" 5 #include "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/time.h" 9 #include "base/time.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
(...skipping 696 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 // Set state such that we exit. 707 // Set state such that we exit.
708 showing_ = false; 708 showing_ = false;
709 exit_type_ = EXIT_ALL; 709 exit_type_ = EXIT_ALL;
710 710
711 if (!IsBlockingRun()) 711 if (!IsBlockingRun())
712 item->GetRootMenuItem()->DropMenuClosed(false); 712 item->GetRootMenuItem()->DropMenuClosed(false);
713 713
714 // WARNING: the call to MenuClosed deletes us. 714 // WARNING: the call to MenuClosed deletes us.
715 715
716 // If over an empty menu item, drop occurs on the parent. 716 // If over an empty menu item, drop occurs on the parent.
717 if (drop_target->GetID() == MenuItemView::kEmptyMenuItemViewID) 717 if (drop_target->id() == MenuItemView::kEmptyMenuItemViewID)
718 drop_target = drop_target->GetParentMenuItem(); 718 drop_target = drop_target->GetParentMenuItem();
719 719
720 return drop_target->GetDelegate()->OnPerformDrop( 720 return drop_target->GetDelegate()->OnPerformDrop(
721 drop_target, drop_position, event); 721 drop_target, drop_position, event);
722 } 722 }
723 723
724 void MenuController::OnDragEnteredScrollButton(SubmenuView* source, 724 void MenuController::OnDragEnteredScrollButton(SubmenuView* source,
725 bool is_up) { 725 bool is_up) {
726 MenuPart part; 726 MenuPart part;
727 part.type = is_up ? MenuPart::SCROLL_UP : MenuPart::SCROLL_DOWN; 727 part.type = is_up ? MenuPart::SCROLL_UP : MenuPart::SCROLL_DOWN;
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after
1116 } 1116 }
1117 i->submenu_open = false; 1117 i->submenu_open = false;
1118 i->item = last_item; 1118 i->item = last_item;
1119 } 1119 }
1120 } 1120 }
1121 1121
1122 MenuItemView* MenuController::GetMenuItemAt(View* source, int x, int y) { 1122 MenuItemView* MenuController::GetMenuItemAt(View* source, int x, int y) {
1123 // Walk the view hierarchy until we find a menu item (or the root). 1123 // Walk the view hierarchy until we find a menu item (or the root).
1124 View* child_under_mouse = source->GetEventHandlerForPoint(gfx::Point(x, y)); 1124 View* child_under_mouse = source->GetEventHandlerForPoint(gfx::Point(x, y));
1125 while (child_under_mouse && 1125 while (child_under_mouse &&
1126 child_under_mouse->GetID() != MenuItemView::kMenuItemViewID) { 1126 child_under_mouse->id() != MenuItemView::kMenuItemViewID) {
1127 child_under_mouse = child_under_mouse->parent(); 1127 child_under_mouse = child_under_mouse->parent();
1128 } 1128 }
1129 if (child_under_mouse && child_under_mouse->IsEnabled() && 1129 if (child_under_mouse && child_under_mouse->IsEnabled() &&
1130 child_under_mouse->GetID() == MenuItemView::kMenuItemViewID) { 1130 child_under_mouse->id() == MenuItemView::kMenuItemViewID) {
1131 return static_cast<MenuItemView*>(child_under_mouse); 1131 return static_cast<MenuItemView*>(child_under_mouse);
1132 } 1132 }
1133 return NULL; 1133 return NULL;
1134 } 1134 }
1135 1135
1136 MenuItemView* MenuController::GetEmptyMenuItemAt(View* source, int x, int y) { 1136 MenuItemView* MenuController::GetEmptyMenuItemAt(View* source, int x, int y) {
1137 View* child_under_mouse = source->GetEventHandlerForPoint(gfx::Point(x, y)); 1137 View* child_under_mouse = source->GetEventHandlerForPoint(gfx::Point(x, y));
1138 if (child_under_mouse && 1138 if (child_under_mouse &&
1139 child_under_mouse->GetID() == MenuItemView::kEmptyMenuItemViewID) { 1139 child_under_mouse->id() == MenuItemView::kEmptyMenuItemViewID) {
1140 return static_cast<MenuItemView*>(child_under_mouse); 1140 return static_cast<MenuItemView*>(child_under_mouse);
1141 } 1141 }
1142 return NULL; 1142 return NULL;
1143 } 1143 }
1144 1144
1145 bool MenuController::IsScrollButtonAt(SubmenuView* source, 1145 bool MenuController::IsScrollButtonAt(SubmenuView* source,
1146 int x, 1146 int x,
1147 int y, 1147 int y,
1148 MenuPart::Type* part) { 1148 MenuPart::Type* part) {
1149 MenuScrollViewContainer* scroll_view = source->GetScrollViewContainer(); 1149 MenuScrollViewContainer* scroll_view = source->GetScrollViewContainer();
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after
1572 int delta) { 1572 int delta) {
1573 int start_index = index; 1573 int start_index = index;
1574 int parent_count = parent->GetSubmenu()->GetMenuItemCount(); 1574 int parent_count = parent->GetSubmenu()->GetMenuItemCount();
1575 // Loop through the menu items skipping any invisible menus. The loop stops 1575 // Loop through the menu items skipping any invisible menus. The loop stops
1576 // when we wrap or find a visible child. 1576 // when we wrap or find a visible child.
1577 do { 1577 do {
1578 index = (index + delta + parent_count) % parent_count; 1578 index = (index + delta + parent_count) % parent_count;
1579 if (index == start_index) 1579 if (index == start_index)
1580 return NULL; 1580 return NULL;
1581 MenuItemView* child = parent->GetSubmenu()->GetMenuItemAt(index); 1581 MenuItemView* child = parent->GetSubmenu()->GetMenuItemAt(index);
1582 if (child->IsVisible()) 1582 if (child->visible())
1583 return child; 1583 return child;
1584 } while (index != start_index); 1584 } while (index != start_index);
1585 return NULL; 1585 return NULL;
1586 } 1586 }
1587 1587
1588 void MenuController::OpenSubmenuChangeSelectionIfCan() { 1588 void MenuController::OpenSubmenuChangeSelectionIfCan() {
1589 MenuItemView* item = pending_state_.item; 1589 MenuItemView* item = pending_state_.item;
1590 if (item->HasSubmenu()) { 1590 if (item->HasSubmenu()) {
1591 if (item->GetSubmenu()->GetMenuItemCount() > 0) { 1591 if (item->GetSubmenu()->GetMenuItemCount() > 0) {
1592 SetSelection(item->GetSubmenu()->GetMenuItemAt(0), 1592 SetSelection(item->GetSubmenu()->GetMenuItemAt(0),
(...skipping 21 matching lines...) Expand all
1614 MenuItemView* parent, 1614 MenuItemView* parent,
1615 char16 key, 1615 char16 key,
1616 bool (*match_function)(MenuItemView* menu, char16 mnemonic)) { 1616 bool (*match_function)(MenuItemView* menu, char16 mnemonic)) {
1617 SubmenuView* submenu = parent->GetSubmenu(); 1617 SubmenuView* submenu = parent->GetSubmenu();
1618 DCHECK(submenu); 1618 DCHECK(submenu);
1619 SelectByCharDetails details; 1619 SelectByCharDetails details;
1620 1620
1621 for (int i = 0, menu_item_count = submenu->GetMenuItemCount(); 1621 for (int i = 0, menu_item_count = submenu->GetMenuItemCount();
1622 i < menu_item_count; ++i) { 1622 i < menu_item_count; ++i) {
1623 MenuItemView* child = submenu->GetMenuItemAt(i); 1623 MenuItemView* child = submenu->GetMenuItemAt(i);
1624 if (child->IsEnabled() && child->IsVisible()) { 1624 if (child->IsEnabled() && child->visible()) {
1625 if (child == pending_state_.item) 1625 if (child == pending_state_.item)
1626 details.index_of_item = i; 1626 details.index_of_item = i;
1627 if (match_function(child, key)) { 1627 if (match_function(child, key)) {
1628 if (details.first_match == -1) 1628 if (details.first_match == -1)
1629 details.first_match = i; 1629 details.first_match = i;
1630 else 1630 else
1631 details.has_multiple = true; 1631 details.has_multiple = true;
1632 if (details.next_match == -1 && details.index_of_item != -1 && 1632 if (details.next_match == -1 && details.index_of_item != -1 &&
1633 i > details.index_of_item) 1633 i > details.index_of_item)
1634 details.next_match = i; 1634 details.next_match = i;
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
1862 return; 1862 return;
1863 1863
1864 // Reset the active_mouse_view_ before sending mouse capture lost. That way if 1864 // Reset the active_mouse_view_ before sending mouse capture lost. That way if
1865 // it calls back to us, we aren't in a weird state. 1865 // it calls back to us, we aren't in a weird state.
1866 View* active_view = active_mouse_view_; 1866 View* active_view = active_mouse_view_;
1867 active_mouse_view_ = NULL; 1867 active_mouse_view_ = NULL;
1868 active_view->OnMouseCaptureLost(); 1868 active_view->OnMouseCaptureLost();
1869 } 1869 }
1870 1870
1871 } // namespace views 1871 } // namespace views
OLDNEW
« no previous file with comments | « views/controls/link.cc ('k') | views/controls/menu/menu_item_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698