views: Add can_activate parameter to AddOverlayView

This commit is contained in:
Philipp Thiel
2023-10-25 11:16:57 +02:00
committed by Marshall Greenblatt
parent 2a9696c162
commit 092056ce2d
13 changed files with 50 additions and 32 deletions

View File

@@ -167,7 +167,9 @@ CefOverlayViewHost::CefOverlayViewHost(CefWindowView* window_view,
cef_docking_mode_t docking_mode)
: window_view_(window_view), docking_mode_(docking_mode) {}
void CefOverlayViewHost::Init(views::View* host_view, CefRefPtr<CefView> view) {
void CefOverlayViewHost::Init(views::View* host_view,
CefRefPtr<CefView> view,
bool can_activate) {
DCHECK(view);
// Match the logic in CEF_PANEL_IMPL_D::AddChildView().
@@ -186,7 +188,9 @@ void CefOverlayViewHost::Init(views::View* host_view, CefRefPtr<CefView> view) {
params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
params.parent = window_view_->GetWidget()->GetNativeView();
params.opacity = views::Widget::InitParams::WindowOpacity::kTranslucent;
params.activatable = views::Widget::InitParams::Activatable::kNo;
params.activatable = can_activate
? views::Widget::InitParams::Activatable::kYes
: views::Widget::InitParams::Activatable::kNo;
widget_->Init(std::move(params));
view_ = widget_->GetContentsView()->AddChildView(std::move(controls_view));

View File

@@ -32,7 +32,7 @@ class CefOverlayViewHost : public views::WidgetDelegate,
// paints into. On Aura platforms, |host_view| is the view whose position in
// the |window_view_| view hierarchy determines the z-order of the widget
// relative to views with layers and views with associated NativeViews.
void Init(views::View* host_view, CefRefPtr<CefView> view);
void Init(views::View* host_view, CefRefPtr<CefView> view, bool can_activate);
void Destroy();

View File

@@ -349,10 +349,11 @@ CefRefPtr<CefImage> CefWindowImpl::GetWindowAppIcon() {
CefRefPtr<CefOverlayController> CefWindowImpl::AddOverlayView(
CefRefPtr<CefView> view,
cef_docking_mode_t docking_mode) {
cef_docking_mode_t docking_mode,
bool can_activate) {
CEF_REQUIRE_VALID_RETURN(nullptr);
if (root_view()) {
return root_view()->AddOverlayView(view, docking_mode);
return root_view()->AddOverlayView(view, docking_mode, can_activate);
}
return nullptr;
}

View File

@@ -67,7 +67,8 @@ class CefWindowImpl
CefRefPtr<CefImage> GetWindowAppIcon() override;
CefRefPtr<CefOverlayController> AddOverlayView(
CefRefPtr<CefView> view,
cef_docking_mode_t docking_mode) override;
cef_docking_mode_t docking_mode,
bool can_activate) override;
void ShowMenu(CefRefPtr<CefMenuModel> menu_model,
const CefPoint& screen_point,
cef_menu_anchor_position_t anchor_position) override;

View File

@@ -795,7 +795,8 @@ void CefWindowView::SetWindowAppIcon(CefRefPtr<CefImage> window_app_icon) {
CefRefPtr<CefOverlayController> CefWindowView::AddOverlayView(
CefRefPtr<CefView> view,
cef_docking_mode_t docking_mode) {
cef_docking_mode_t docking_mode,
bool can_activate) {
DCHECK(view.get());
DCHECK(view->IsValid());
if (!view.get() || !view->IsValid()) {
@@ -811,7 +812,7 @@ CefRefPtr<CefOverlayController> CefWindowView::AddOverlayView(
std::make_unique<CefOverlayViewHost>(this, docking_mode));
auto& overlay_host = overlay_hosts_.back();
overlay_host->Init(overlay_host_view, view);
overlay_host->Init(overlay_host_view, view, can_activate);
return overlay_host->controller();
}

View File

@@ -105,7 +105,8 @@ class CefWindowView
CefRefPtr<CefOverlayController> AddOverlayView(
CefRefPtr<CefView> view,
cef_docking_mode_t docking_mode);
cef_docking_mode_t docking_mode,
bool can_activate);
// Set/get the draggable regions.
void SetDraggableRegions(const std::vector<CefDraggableRegion>& regions);