• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3 // found in the LICENSE file.
4 
5 #ifndef UI_VIEWS_CONTROLS_MENU_MENU_CONFIG_H_
6 #define UI_VIEWS_CONTROLS_MENU_MENU_CONFIG_H_
7 
8 #include "third_party/skia/include/core/SkColor.h"
9 #include "ui/gfx/font_list.h"
10 #include "ui/views/views_export.h"
11 
12 namespace ui {
13 class NativeTheme;
14 }
15 
16 namespace views {
17 
18 // Layout type information for menu items. Use the instance() method to obtain
19 // the MenuConfig for the current platform.
20 struct VIEWS_EXPORT MenuConfig {
21   explicit MenuConfig(const ui::NativeTheme* theme);
22   ~MenuConfig();
23 
24   static const MenuConfig& instance(const ui::NativeTheme* theme);
25 
26   // Font list used by menus.
27   gfx::FontList font_list;
28 
29   // Color for the arrow to scroll bookmarks.
30   SkColor arrow_color;
31 
32   // Menu border sizes.
33   int menu_vertical_border_size;
34   int menu_horizontal_border_size;
35 
36   // Submenu horizontal inset with parent menu. This is the horizontal overlap
37   // between the submenu and its parent menu, not including the borders of
38   // submenu and parent menu.
39   int submenu_horizontal_inset;
40 
41   // Margins between the top of the item and the label.
42   int item_top_margin;
43 
44   // Margins between the bottom of the item and the label.
45   int item_bottom_margin;
46 
47   // Margins used if the menu doesn't have icons.
48   int item_no_icon_top_margin;
49   int item_no_icon_bottom_margin;
50 
51   // Margins between the left of the item and the icon.
52   int item_left_margin;
53 
54   // Padding between the label and submenu arrow.
55   int label_to_arrow_padding;
56 
57   // Padding between the arrow and the edge.
58   int arrow_to_edge_padding;
59 
60   // Padding between the icon and label.
61   int icon_to_label_padding;
62 
63   // Padding between the gutter and label.
64   int gutter_to_label;
65 
66   // Size of the check.
67   int check_width;
68   int check_height;
69 
70   // Width of the radio bullet.
71   int radio_width;
72 
73   // Width of the submenu arrow.
74   int arrow_width;
75 
76   // Width of the gutter. Only used if render_gutter is true.
77   int gutter_width;
78 
79   // Height of a normal separator (ui::NORMAL_SEPARATOR).
80   int separator_height;
81 
82   // Height of a ui::UPPER_SEPARATOR.
83   int separator_upper_height;
84 
85   // Height of a ui::LOWER_SEPARATOR.
86   int separator_lower_height;
87 
88   // Height of a ui::SPACING_SEPARATOR.
89   int separator_spacing_height;
90 
91   // Whether or not the gutter should be rendered. The gutter is specific to
92   // Vista.
93   bool render_gutter;
94 
95   // Are mnemonics shown?
96   bool show_mnemonics;
97 
98   // Height of the scroll arrow.
99   int scroll_arrow_height;
100 
101   // Padding between the label and minor text. Only used if there is an
102   // accelerator or sublabel.
103   int label_to_minor_text_padding;
104 
105   // Minimum height of menu item.
106   int item_min_height;
107 
108   // Whether the keyboard accelerators are visible.
109   bool show_accelerators;
110 
111   // True if icon to label padding is always added with or without icon.
112   bool always_use_icon_to_label_padding;
113 
114   // True if submenu arrow and shortcut right edge should be aligned.
115   bool align_arrow_and_shortcut;
116 
117   // True if the context menu's should be offset from the cursor position.
118   bool offset_context_menus;
119 
120   const ui::NativeTheme* native_theme;
121 
122   // Delay, in ms, between when menus are selected or moused over and the menu
123   // appears.
124   int show_delay;
125 
126   // Radius of the rounded corners of the menu border. Must be >= 0.
127   int corner_radius;
128 
129  private:
130   // Configures a MenuConfig as appropriate for the current platform.
131   void Init(const ui::NativeTheme* theme);
132 
133   // TODO: temporary until we standardize.
134   void InitAura(const ui::NativeTheme* theme);
135 };
136 
137 }  // namespace views
138 
139 #endif  // UI_VIEWS_CONTROLS_MENU_MENU_CONFIG_H_
140