Upstream version 9.38.198.0
[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 #endif
26
27 gfx::Size MenuSeparator::GetPreferredSize() const {
28   const MenuConfig& menu_config = parent_menu_item_->GetMenuConfig();
29   int height = menu_config.separator_height;
30   switch(type_) {
31     case ui::SPACING_SEPARATOR:
32       height = menu_config.separator_spacing_height;
33       break;
34     case ui::LOWER_SEPARATOR:
35       height = menu_config.separator_lower_height;
36       break;
37     case ui::UPPER_SEPARATOR:
38       height = menu_config.separator_upper_height;
39       break;
40     default:
41       height = menu_config.separator_height;
42       break;
43   }
44   return gfx::Size(10,  // Just in case we're the only item in a menu.
45                    height);
46 }
47
48 gfx::Rect MenuSeparator::GetPaintBounds() {
49   int pos = 0;
50   switch (type_) {
51     case ui::LOWER_SEPARATOR:
52       pos = height() - kSeparatorHeight;
53       break;
54     case ui::SPACING_SEPARATOR:
55       return gfx::Rect();
56     case ui::UPPER_SEPARATOR:
57       break;
58     default:
59       pos = height() / 2;
60       break;
61   }
62
63   return gfx::Rect(0, pos, width(), kSeparatorHeight);
64 }
65
66 void MenuSeparator::OnPaintAura(gfx::Canvas* canvas) {
67   canvas->FillRect(GetPaintBounds(),
68                    GetNativeTheme()->GetSystemColor(
69                        ui::NativeTheme::kColorId_MenuSeparatorColor));
70 }
71
72 }  // namespace views