fix: vibrant view is inserted into Views API hierarchy (#43127)

* fix: vibrant view is inserted into Views API hierarchy (#42263)

Co-authored-by: Hans Halverson <hans_halverson@alumni.brown.edu>

* Update shell/browser/native_window_mac.mm

Co-authored-by: Charles Kerr <charles@charleskerr.com>

Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>

---------

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Hans Halverson <hans_halverson@alumni.brown.edu>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
This commit is contained in:
trop[bot] 2024-07-31 19:59:04 -05:00 committed by GitHub
parent 643d436b5c
commit 54c8036c71
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 21 additions and 7 deletions

View file

@ -1394,13 +1394,19 @@ void NativeWindowMac::SetVibrancy(const std::string& type) {
NativeWindow::SetVibrancy(type);
NSVisualEffectView* vibrantView = [window_ vibrantView];
views::View* rootView = GetContentsView();
if (type.empty()) {
if (vibrantView == nil)
return;
if (vibrant_native_view_host_ != nullptr) {
// Transfers ownership back to caller in the form of a unique_ptr which is
// subsequently deleted.
rootView->RemoveChildViewT(vibrant_native_view_host_);
vibrant_native_view_host_ = nullptr;
}
[vibrantView removeFromSuperview];
[window_ setVibrantView:nil];
if (vibrantView != nil) {
[window_ setVibrantView:nil];
}
return;
}
@ -1456,9 +1462,13 @@ void NativeWindowMac::SetVibrancy(const std::string& type) {
[vibrantView setState:NSVisualEffectStateFollowsWindowActiveState];
}
[[window_ contentView] addSubview:vibrantView
positioned:NSWindowBelow
relativeTo:nil];
// Vibrant view is inserted into the root view hierarchy underneath all
// other views.
vibrant_native_view_host_ = rootView->AddChildViewAt(
std::make_unique<views::NativeViewHost>(), 0);
vibrant_native_view_host_->Attach(vibrantView);
rootView->DeprecatedLayoutImmediately();
UpdateVibrancyRadii(IsFullscreen());
}