910e62b5创建于 1月15日历史提交
// Copyright 2024 The Chromium Authors
// 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/label_button_image_container.h"

#include "ui/base/models/image_model.h"
#include "ui/views/controls/button/label_button.h"

namespace views {

std::unique_ptr<View> SingleImageContainer::CreateView() {
  std::unique_ptr<ImageView> view = std::make_unique<ImageView>();
  view->SetCanProcessEventsWithinSubtree(false);
  image_view_tracker_.SetView(view.get());
  return view;
}

View* SingleImageContainer::GetView() {
  return image_view_tracker_.view();
}

const View* SingleImageContainer::GetView() const {
  return image_view_tracker_.view();
}

void SingleImageContainer::UpdateImage(const LabelButton* button) {
  if (auto* view = image_view_tracker_.view(); view) {
    static_cast<ImageView*>(view)->SetImage(ui::ImageModel::FromImageSkia(
        button->GetImage(button->GetVisualState())));
  }
}

}  // namespace views