Home | History | Annotate | Download | only in menu
      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
     72