- add sources.
[platform/framework/web/crosswalk.git] / src / ui / views / controls / menu / menu_separator_views.cc
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 #include "ui/views/controls/menu/menu_separator.h"
6
7 #include "third_party/skia/include/core/SkColor.h"
8 #include "ui/gfx/canvas.h"
9 #include "ui/native_theme/native_theme.h"
10 #include "ui/views/controls/menu/menu_config.h"
11 #include "ui/views/controls/menu/menu_item_view.h"
12
13 namespace {
14
15 const int kSeparatorHeight = 1;
16
17 }  // namespace
18
19 namespace views {
20
21 #if !defined(OS_WIN)
22 void MenuSeparator::OnPaint(gfx::Canvas* canvas) {
23   OnPaintAura(canvas);
24 }
25
26 gfx::Size MenuSeparator::GetPreferredSize() {
27   return GetPreferredSizeAura();
28 }
29 #endif
30
31 void MenuSeparator::OnPaintAura(gfx::Canvas* canvas) {
32   int pos = 0;
33   switch (type_) {
34     case ui::LOWER_SEPARATOR:
35       pos = height() - kSeparatorHeight;
36       break;
37     case ui::SPACING_SEPARATOR:
38       return;
39     case ui::UPPER_SEPARATOR:
40       break;
41     default:
42       pos = height() / 2;
43       break;
44   }
45   canvas->FillRect(gfx::Rect(0, pos, width(), kSeparatorHeight),
46                    GetNativeTheme()->GetSystemColor(
47                        ui::NativeTheme::kColorId_MenuSeparatorColor));
48 }
49
50 gfx::Size MenuSeparator::GetPreferredSizeAura() {
51   const MenuConfig& menu_config = parent_menu_item_->GetMenuConfig();
52   int height = menu_config.separator_height;
53   switch(type_) {
54     case ui::SPACING_SEPARATOR:
55       height = menu_config.separator_spacing_height;
56       break;
57     case ui::LOWER_SEPARATOR:
58       height = menu_config.separator_lower_height;
59       break;
60     case ui::UPPER_SEPARATOR:
61       height = menu_config.separator_upper_height;
62       break;
63     default:
64       height = menu_config.separator_height;
65       break;
66   }
67   return gfx::Size(10,  // Just in case we're the only item in a menu.
68                    height);
69 }
70
71 }  // namespace views