// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/browser/ui/views/toolbar/back_button.h" #include "ui/gfx/geometry/insets.h" #include "ui/views/animation/ink_drop_animation_controller.h" #include "ui/views/controls/button/label_button_border.h" #include "ui/views/painter.h" BackButton::BackButton(Profile* profile, views::ButtonListener* listener, ui::MenuModel* model) : ToolbarButton(profile, listener, model), margin_leading_(0) {} BackButton::~BackButton() {} void BackButton::SetLeadingMargin(int margin) { margin_leading_ = margin; UpdateThemedBorder(); const int inset = LabelButton::kFocusRectInset; const bool is_rtl = base::i18n::IsRTL(); const gfx::Insets insets(inset, inset + (is_rtl ? 0 : margin), inset, inset + (is_rtl ? margin : 0)); SetFocusPainter(views::Painter::CreateDashedFocusPainterWithInsets(insets)); InvalidateLayout(); } const char* BackButton::GetClassName() const { return "BackButton"; } scoped_ptr BackButton::CreateDefaultBorder() const { scoped_ptr border = ToolbarButton::CreateDefaultBorder(); // Adjust border insets to follow the margin change, // which will be reflected in where the border is painted // through GetThemePaintRect(). const gfx::Insets insets(border->GetInsets()); border->set_insets(gfx::Insets(insets.top(), insets.left() + margin_leading_, insets.bottom(), insets.right())); return border; } gfx::Rect BackButton::GetThemePaintRect() const { gfx::Rect rect(LabelButton::GetThemePaintRect()); const bool is_rtl = base::i18n::IsRTL(); rect.Inset(is_rtl ? 0 : margin_leading_, 0, is_rtl ? margin_leading_ : 0, 0); return rect; }