Commit 1dafceb5 authored by Olesia Marukhno's avatar Olesia Marukhno Committed by Commit Bot

Add setting custom padding to md text button

It is used in the permission chip to get proper padding.

Bug: 1019129
Change-Id: I33b5ed4599d65a3d32f3177c9b47d2ec35451604
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2235042
Commit-Queue: Olesia Marukhno <olesiamarukhno@google.com>
Reviewed-by: default avatarScott Violet <sky@chromium.org>
Reviewed-by: default avatarBret Sepulveda <bsep@chromium.org>
Cr-Commit-Position: refs/heads/master@{#776634}
parent 403dd173
......@@ -89,6 +89,9 @@ PermissionChip::PermissionChip(Browser* browser)
// Equalizing padding on the left, right and between icon and label.
chip_button_->SetImageLabelSpacing(
GetLayoutInsets(LOCATION_BAR_ICON_INTERIOR_PADDING).left());
chip_button_->SetCustomPadding(
gfx::Insets(GetLayoutConstant(LOCATION_BAR_CHILD_INTERIOR_PADDING),
GetLayoutInsets(LOCATION_BAR_ICON_INTERIOR_PADDING).left()));
chip_button_->SetButtonController(std::make_unique<BubbleButtonController>(
chip_button_, this,
......
......@@ -1050,6 +1050,7 @@ test("views_unittests") {
"controls/button/image_button_unittest.cc",
"controls/button/label_button_label_unittest.cc",
"controls/button/label_button_unittest.cc",
"controls/button/md_text_button_unittest.cc",
"controls/button/menu_button_unittest.cc",
"controls/button/radio_button_unittest.cc",
"controls/button/toggle_button_unittest.cc",
......
......@@ -142,6 +142,11 @@ void MdTextButton::SetEnabledTextColors(base::Optional<SkColor> color) {
UpdateColors();
}
void MdTextButton::SetCustomPadding(const gfx::Insets& padding) {
custom_padding_ = padding;
UpdatePadding();
}
void MdTextButton::SetText(const base::string16& text) {
LabelButton::SetText(text);
UpdatePadding();
......@@ -183,6 +188,11 @@ void MdTextButton::UpdatePadding() {
return;
}
SetBorder(
CreateEmptyBorder(custom_padding_.value_or(CalculateDefaultPadding())));
}
gfx::Insets MdTextButton::CalculateDefaultPadding() const {
// Text buttons default to 28dp in height on all platforms when the base font
// is in use, but should grow or shrink if the font size is adjusted up or
// down. When the system font size has been adjusted, the base font will be
......@@ -213,8 +223,8 @@ void MdTextButton::UpdatePadding() {
// we apply the MD treatment to all buttons, even GTK buttons?
const int horizontal_padding = LayoutProvider::Get()->GetDistanceMetric(
DISTANCE_BUTTON_HORIZONTAL_PADDING);
SetBorder(CreateEmptyBorder(top_padding, horizontal_padding, bottom_padding,
horizontal_padding));
return gfx::Insets(top_padding, horizontal_padding, bottom_padding,
horizontal_padding);
}
void MdTextButton::UpdateColors() {
......
......@@ -39,6 +39,9 @@ class VIEWS_EXPORT MdTextButton : public LabelButton {
void SetCornerRadius(float radius);
float GetCornerRadius() const;
// See |custom_padding_|.
void SetCustomPadding(const gfx::Insets& padding);
// LabelButton:
void OnThemeChanged() override;
std::unique_ptr<views::InkDropHighlight> CreateInkDropHighlight()
......@@ -59,6 +62,7 @@ class VIEWS_EXPORT MdTextButton : public LabelButton {
private:
void UpdatePadding();
void UpdateColors();
gfx::Insets CalculateDefaultPadding() const;
// True if this button uses prominent styling (blue fill, etc.).
bool is_prominent_ = false;
......@@ -68,6 +72,9 @@ class VIEWS_EXPORT MdTextButton : public LabelButton {
float corner_radius_ = 0.0f;
// Used to override default padding.
base::Optional<gfx::Insets> custom_padding_;
DISALLOW_COPY_AND_ASSIGN(MdTextButton);
};
......
// Copyright 2020 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 "ui/views/controls/button/md_text_button.h"
#include "ui/views/test/views_test_base.h"
namespace views {
using MdTextButtonTest = ViewsTestBase;
TEST_F(MdTextButtonTest, CustomPadding) {
const base::string16 text = base::ASCIIToUTF16("abc");
std::unique_ptr<MdTextButton> button =
MdTextButton::Create(nullptr, text, views::style::CONTEXT_BUTTON_MD);
const gfx::Insets custom_padding(10, 20);
ASSERT_NE(button->GetInsets(), custom_padding);
button->SetCustomPadding(custom_padding);
EXPECT_EQ(button->GetInsets(), custom_padding);
}
} // namespace views
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment