Home | History | Annotate | Download | only in toolbar
      1 // Copyright 2013 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 "chrome/browser/ui/views/toolbar/back_button.h"
      6 
      7 #include "ui/gfx/insets.h"
      8 #include "ui/views/controls/button/label_button_border.h"
      9 #include "ui/views/painter.h"
     10 
     11 BackButton::BackButton(views::ButtonListener* listener,
     12                        ui::MenuModel* model)
     13     : ToolbarButton(listener, model),
     14       margin_leading_(0) {
     15 }
     16 
     17 BackButton::~BackButton() {
     18 }
     19 
     20 gfx::Rect BackButton::GetThemePaintRect() const  {
     21   gfx::Rect rect(LabelButton::GetThemePaintRect());
     22   rect.Inset(margin_leading_, 0, 0, 0);
     23   return rect;
     24 }
     25 
     26 void BackButton::SetLeadingMargin(int margin) {
     27   // Adjust border insets to follow the margin change,
     28   // which will be reflected in where the border is painted
     29   // through |GetThemePaintRect|.
     30   gfx::Insets insets(border()->GetInsets());
     31   static_cast<views::LabelButtonBorder*>(border())->set_insets(
     32       gfx::Insets(insets.top(), insets.left() + margin - margin_leading_,
     33                   insets.bottom(), insets.right()));
     34 
     35   // Similarly fiddle the focus border. Value consistent with LabelButton
     36   // and TextButton.
     37   // TODO(gbillock): Refactor this magic number somewhere global to views,
     38   // probably a FocusBorder constant.
     39   const int kFocusRectInset = 3;
     40   SetFocusPainter(views::Painter::CreateDashedFocusPainterWithInsets(
     41                       gfx::Insets(kFocusRectInset, kFocusRectInset + margin,
     42                                   kFocusRectInset, kFocusRectInset)));
     43 
     44   margin_leading_ = margin;
     45   InvalidateLayout();
     46 }
     47