// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef UI_VIEWS_CONTROLS_MENU_MENU_CONFIG_H_ #define UI_VIEWS_CONTROLS_MENU_MENU_CONFIG_H_ #include "third_party/skia/include/core/SkColor.h" #include "ui/gfx/font_list.h" #include "ui/views/views_export.h" namespace ui { class NativeTheme; } namespace views { // Layout type information for menu items. Use the instance() method to obtain // the MenuConfig for the current platform. struct VIEWS_EXPORT MenuConfig { explicit MenuConfig(const ui::NativeTheme* theme); ~MenuConfig(); static const MenuConfig& instance(const ui::NativeTheme* theme); // Font list used by menus. gfx::FontList font_list; // Color for the arrow to scroll bookmarks. SkColor arrow_color; // Menu border sizes. int menu_vertical_border_size; int menu_horizontal_border_size; // Submenu horizontal inset with parent menu. This is the horizontal overlap // between the submenu and its parent menu, not including the borders of // submenu and parent menu. int submenu_horizontal_inset; // Margins between the top of the item and the label. int item_top_margin; // Margins between the bottom of the item and the label. int item_bottom_margin; // Margins used if the menu doesn't have icons. int item_no_icon_top_margin; int item_no_icon_bottom_margin; // Margins between the left of the item and the icon. int item_left_margin; // Padding between the label and submenu arrow. int label_to_arrow_padding; // Padding between the arrow and the edge. int arrow_to_edge_padding; // Padding between the icon and label. int icon_to_label_padding; // Padding between the gutter and label. int gutter_to_label; // Size of the check. int check_width; int check_height; // Width of the radio bullet. int radio_width; // Width of the submenu arrow. int arrow_width; // Width of the gutter. Only used if render_gutter is true. int gutter_width; // Height of a normal separator (ui::NORMAL_SEPARATOR). int separator_height; // Height of a ui::UPPER_SEPARATOR. int separator_upper_height; // Height of a ui::LOWER_SEPARATOR. int separator_lower_height; // Height of a ui::SPACING_SEPARATOR. int separator_spacing_height; // Whether or not the gutter should be rendered. The gutter is specific to // Vista. bool render_gutter; // Are mnemonics shown? bool show_mnemonics; // Height of the scroll arrow. int scroll_arrow_height; // Padding between the label and minor text. Only used if there is an // accelerator or sublabel. int label_to_minor_text_padding; // Minimum height of menu item. int item_min_height; // Whether the keyboard accelerators are visible. bool show_accelerators; // True if icon to label padding is always added with or without icon. bool always_use_icon_to_label_padding; // True if submenu arrow and shortcut right edge should be aligned. bool align_arrow_and_shortcut; // True if the context menu's should be offset from the cursor position. bool offset_context_menus; const ui::NativeTheme* native_theme; // Delay, in ms, between when menus are selected or moused over and the menu // appears. int show_delay; // Radius of the rounded corners of the menu border. Must be >= 0. int corner_radius; private: // Configures a MenuConfig as appropriate for the current platform. void Init(const ui::NativeTheme* theme); // TODO: temporary until we standardize. void InitAura(const ui::NativeTheme* theme); }; } // namespace views #endif // UI_VIEWS_CONTROLS_MENU_MENU_CONFIG_H_