| Index: chrome/browser/ui/views/payments/payment_request_item_list.cc
|
| diff --git a/chrome/browser/ui/views/payments/payment_request_item_list.cc b/chrome/browser/ui/views/payments/payment_request_item_list.cc
|
| index cef163242e9fdfa808184dc5bbd4a3782cd40a5f..469a1422e5c984ca0fe2b2c0de4db7f01a8c4c18 100644
|
| --- a/chrome/browser/ui/views/payments/payment_request_item_list.cc
|
| +++ b/chrome/browser/ui/views/payments/payment_request_item_list.cc
|
| @@ -9,6 +9,9 @@
|
| #include "chrome/browser/ui/views/payments/payment_request_views_util.h"
|
| #include "components/payments/content/payment_request_state.h"
|
| #include "ui/gfx/paint_vector_icon.h"
|
| +#include "ui/vector_icons/vector_icons.h"
|
| +#include "ui/views/controls/button/image_button.h"
|
| +#include "ui/views/controls/button/image_button_factory.h"
|
| #include "ui/views/controls/image_view.h"
|
| #include "ui/views/layout/box_layout.h"
|
| #include "ui/views/layout/grid_layout.h"
|
| @@ -26,8 +29,13 @@ const SkColor kCheckmarkColor = 0xFF609265;
|
| PaymentRequestItemList::Item::Item(PaymentRequestSpec* spec,
|
| PaymentRequestState* state,
|
| PaymentRequestItemList* list,
|
| - bool selected)
|
| - : spec_(spec), state_(state), list_(list), selected_(selected) {}
|
| + bool selected,
|
| + bool show_edit_button)
|
| + : spec_(spec),
|
| + state_(state),
|
| + list_(list),
|
| + selected_(selected),
|
| + show_edit_button_(show_edit_button) {}
|
|
|
| PaymentRequestItemList::Item::~Item() {}
|
|
|
| @@ -94,9 +102,30 @@ std::unique_ptr<views::View> PaymentRequestItemList::Item::CreateItemView() {
|
| columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0,
|
| views::GridLayout::USE_PREF, 0, 0);
|
|
|
| - // Add a column for the extra_view, which comes after the checkmark.
|
| - columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0,
|
| - views::GridLayout::USE_PREF, 0, 0);
|
| + // The space between the checkmark, extra view, and edit button.
|
| + constexpr int kExtraViewSpacing = 16;
|
| + std::unique_ptr<views::View> extra_view = CreateExtraView();
|
| + if (extra_view) {
|
| + columns->AddPaddingColumn(0, kExtraViewSpacing);
|
| + // Add a column for the extra_view, which comes after the checkmark.
|
| + columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER,
|
| + 0, views::GridLayout::USE_PREF, 0, 0);
|
| + }
|
| +
|
| + if (show_edit_button_) {
|
| + edit_button_.reset(views::CreateVectorImageButton(this));
|
| + edit_button_->set_owned_by_client();
|
| + views::SetImageFromVectorIcon(edit_button_.get(), ui::kEditIcon);
|
| + edit_button_->SetFocusBehavior(views::View::FocusBehavior::ALWAYS);
|
| + edit_button_->set_id(static_cast<int>(DialogViewID::EDIT_ITEM_BUTTON));
|
| +
|
| + columns->AddPaddingColumn(0, kExtraViewSpacing);
|
| + // Add a column for the edit_button if it exists.
|
| + constexpr int kEditIconSize = 16;
|
| + columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER,
|
| + 0, views::GridLayout::FIXED, kEditIconSize,
|
| + kEditIconSize);
|
| + }
|
|
|
| layout->StartRow(0, 0);
|
| content->set_can_process_events_within_subtree(false);
|
| @@ -105,16 +134,20 @@ std::unique_ptr<views::View> PaymentRequestItemList::Item::CreateItemView() {
|
| checkmark_ = CreateCheckmark(selected());
|
| layout->AddView(checkmark_.get());
|
|
|
| - std::unique_ptr<views::View> extra_view = CreateExtraView();
|
| if (extra_view)
|
| layout->AddView(extra_view.release());
|
|
|
| + if (edit_button_)
|
| + layout->AddView(edit_button_.get());
|
| +
|
| return std::move(row);
|
| }
|
|
|
| void PaymentRequestItemList::Item::ButtonPressed(views::Button* sender,
|
| const ui::Event& event) {
|
| - if (CanBeSelected()) {
|
| + if (sender == edit_button_.get()) {
|
| + EditButtonPressed();
|
| + } else if (CanBeSelected()) {
|
| list()->SelectItem(this);
|
| } else {
|
| PerformSelectionFallback();
|
|
|