15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2014 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/menu/menu_config.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/layout.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/resource/resource_bundle.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/image/image.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/image/image_skia.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/native_theme/native_theme_aura.h" 1203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "ui/resources/grit/ui_resources.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/controls/menu/menu_image_util.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace { 187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#if defined(OS_CHROMEOS) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static const int kMenuCornerRadiusForAura = 2; 207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#else 217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochstatic const int kMenuCornerRadiusForAura = 0; 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_WIN) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MenuConfig::Init(const ui::NativeTheme* theme) { 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (theme == ui::NativeThemeAura::instance()) 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) InitAura(theme); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MenuConfig::InitAura(const ui::NativeTheme* theme) { 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) submenu_horizontal_inset = 1; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) arrow_to_edge_padding = 20; 354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 36effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch arrow_width = rb.GetImageNamed(IDR_MENU_HIERARCHY_ARROW).Width(); 374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) gfx::ImageSkia check = GetMenuCheckImage(false); 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) check_height = check.height(); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) item_min_height = 29; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) separator_spacing_height = 7; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) separator_lower_height = 8; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) separator_upper_height = 8; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) label_to_arrow_padding = 20; 447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch label_to_minor_text_padding = 20; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) always_use_icon_to_label_padding = true; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) align_arrow_and_shortcut = true; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) offset_context_menus = true; 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) corner_radius = kMenuCornerRadiusForAura; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_WIN) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const MenuConfig& MenuConfig::instance(const ui::NativeTheme* theme) { 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static MenuConfig* views_instance = NULL; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!views_instance) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) views_instance = new MenuConfig(theme ? 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) theme : ui::NativeTheme::instance()); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return *views_instance; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace views 63