view_tree_host_widget.cc 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // Copyright 2020 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. #include "ash/fast_ink/view_tree_host_widget.h"
  5. #include "ash/fast_ink/view_tree_host_root_view.h"
  6. #include "ui/compositor/layer_type.h"
  7. namespace ash {
  8. namespace {
  9. class ViewTreeHostWidget : public views::Widget {
  10. public:
  11. ViewTreeHostWidget() = default;
  12. ~ViewTreeHostWidget() override = default;
  13. ViewTreeHostWidget(const ViewTreeHostWidget&) = delete;
  14. ViewTreeHostWidget& operator=(const ViewTreeHostWidget&) = delete;
  15. // views::Widget:
  16. views::internal::RootView* CreateRootView() override {
  17. return new ViewTreeHostRootView(this);
  18. }
  19. void SchedulePaintInRect(const gfx::Rect& rect) override {
  20. static_cast<ViewTreeHostRootView*>(GetRootView())
  21. ->SchedulePaintInRect(rect);
  22. }
  23. };
  24. } // namespace
  25. views::Widget* CreateViewTreeHostWidget(views::Widget::InitParams params) {
  26. views::Widget* widget = new ViewTreeHostWidget();
  27. params.layer_type = ui::LAYER_SOLID_COLOR;
  28. params.opacity = views::Widget::InitParams::WindowOpacity::kTranslucent;
  29. // ViewTreeHostWidget shouldn't use shadow.
  30. params.shadow_type = views::Widget::InitParams::ShadowType::kNone;
  31. widget->Init(std::move(params));
  32. return widget;
  33. }
  34. } // namespace ash