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

Unified Diff: views/controls/menu/menu_item_view.h

Issue 2741004: Makes it so child views of menuitemview can be traversed with the (Closed)
Patch Set: Tweaks Created 10 years, 6 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: views/controls/menu/menu_item_view.h
diff --git a/views/controls/menu/menu_item_view.h b/views/controls/menu/menu_item_view.h
index db06bf1ce7a157c9223b62819c560b005c975771..c04c34181bef0d506453dab1e0a200bc16237d61 100644
--- a/views/controls/menu/menu_item_view.h
+++ b/views/controls/menu/menu_item_view.h
@@ -26,8 +26,13 @@ class SubmenuView;
// of the various AddXXX methods.
//
// MenuItemView is itself a View, which means you can add Views to each
-// MenuItemView. This normally NOT want you want, rather add other child Views
-// to the submenu of the MenuItemView.
+// MenuItemView. This is normally NOT want you want, rather add other child
+// Views to the submenu of the MenuItemView. Any child views of the MenuItemView
+// that are focusable can be navigated to by way of the up/down arrow and can be
+// activated by way of space/return keys. Activating a focusable child results
+// in |AcceleratorPressed| being invoked. Note, that as menus try not to steal
+// focus from the hosting window child views do not actually get focus. Instead
+// |SetHotTracked| is used as the user navigates around.
//
// There are two ways to show a MenuItemView:
// 1. Use RunMenuAt. This blocks the caller, executing the selected command
@@ -109,14 +114,14 @@ class MenuItemView : public View {
void AppendMenuItem(int item_id,
const std::wstring& label,
Type type) {
- AppendMenuItemInternal(item_id, label, SkBitmap(), type);
+ AppendMenuItemImpl(item_id, label, SkBitmap(), type);
}
// Append a submenu to this menu.
// The returned pointer is owned by this menu.
MenuItemView* AppendSubMenu(int item_id,
const std::wstring& label) {
- return AppendMenuItemInternal(item_id, label, SkBitmap(), SUBMENU);
+ return AppendMenuItemImpl(item_id, label, SkBitmap(), SUBMENU);
}
// Append a submenu with an icon to this menu.
@@ -124,7 +129,7 @@ class MenuItemView : public View {
MenuItemView* AppendSubMenuWithIcon(int item_id,
const std::wstring& label,
const SkBitmap& icon) {
- return AppendMenuItemInternal(item_id, label, icon, SUBMENU);
+ return AppendMenuItemImpl(item_id, label, icon, SUBMENU);
}
// This is a convenience for standard text label menu items where the label
@@ -142,7 +147,7 @@ class MenuItemView : public View {
// Adds a separator to this menu
void AppendSeparator() {
- AppendMenuItemInternal(0, std::wstring(), SkBitmap(), SEPARATOR);
+ AppendMenuItemImpl(0, std::wstring(), SkBitmap(), SEPARATOR);
}
// Appends a menu item with an icon. This is for the menu item which
@@ -151,9 +156,15 @@ class MenuItemView : public View {
void AppendMenuItemWithIcon(int item_id,
const std::wstring& label,
const SkBitmap& icon) {
- AppendMenuItemInternal(item_id, label, icon, NORMAL);
+ AppendMenuItemImpl(item_id, label, icon, NORMAL);
}
+ // All the AppendXXX methods funnel into this.
+ MenuItemView* AppendMenuItemImpl(int item_id,
+ const std::wstring& label,
+ const SkBitmap& icon,
+ Type type);
+
// Returns the view that contains child menu items. If the submenu has
// not been creates, this creates it.
virtual SubmenuView* CreateSubmenu();
@@ -232,6 +243,9 @@ class MenuItemView : public View {
// recalculates the bounds.
void ChildrenChanged();
+ // Sizes any child views.
+ virtual void Layout();
+
protected:
// Creates a MenuItemView. This is used by the various AddXXX methods.
MenuItemView(MenuItemView* parent, int command, Type type);
@@ -248,12 +262,6 @@ class MenuItemView : public View {
MenuItemView::Type type,
MenuDelegate* delegate);
- // All the AddXXX methods funnel into this.
- MenuItemView* AppendMenuItemInternal(int item_id,
- const std::wstring& label,
- const SkBitmap& icon,
- Type type);
-
// Invoked by the MenuController when the menu closes as the result of
// drag and drop run.
void DropMenuClosed(bool notify_delegate);
@@ -289,6 +297,9 @@ class MenuItemView : public View {
int GetTopMargin();
int GetBottomMargin();
+ // Returns the preferred width (and padding) of any children.
+ int GetChildPreferredWidth();
+
// The delegate. This is only valid for the root menu item. You shouldn't
// use this directly, instead use GetDelegate() which walks the tree as
// as necessary.

Powered by Google App Engine
This is Rietveld 408576698