mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
fix: draggable regions removed on win.removeBrowserView(null)
This commit is contained in:
@@ -382,21 +382,32 @@ void BrowserWindow::SetBrowserView(v8::Local<v8::Value> value) {
|
||||
BaseWindow::ResetBrowserViews();
|
||||
BaseWindow::AddBrowserView(value);
|
||||
#if defined(OS_MAC)
|
||||
UpdateDraggableRegions(draggable_regions_);
|
||||
if (!draggable_regions_.empty())
|
||||
UpdateDraggableRegions(draggable_regions_);
|
||||
#endif
|
||||
}
|
||||
|
||||
void BrowserWindow::AddBrowserView(v8::Local<v8::Value> value) {
|
||||
BaseWindow::AddBrowserView(value);
|
||||
#if defined(OS_MAC)
|
||||
UpdateDraggableRegions(draggable_regions_);
|
||||
if (!draggable_regions_.empty()) {
|
||||
UpdateDraggableRegions(draggable_regions_);
|
||||
} else {
|
||||
// It could be the case that there is a BrowserView but that the main
|
||||
// window does not have a webContents. In this case, the view's own
|
||||
// draggable regions might not be properly updated and so we do that here.
|
||||
for (NativeBrowserView* view : window_->browser_views()) {
|
||||
view->UpdateDraggableRegions(view->GetDraggableRegions());
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void BrowserWindow::RemoveBrowserView(v8::Local<v8::Value> value) {
|
||||
BaseWindow::RemoveBrowserView(value);
|
||||
#if defined(OS_MAC)
|
||||
UpdateDraggableRegions(draggable_regions_);
|
||||
if (!draggable_regions_.empty())
|
||||
UpdateDraggableRegions(draggable_regions_);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -404,19 +415,38 @@ void BrowserWindow::SetTopBrowserView(v8::Local<v8::Value> value,
|
||||
gin_helper::Arguments* args) {
|
||||
BaseWindow::SetTopBrowserView(value, args);
|
||||
#if defined(OS_MAC)
|
||||
UpdateDraggableRegions(draggable_regions_);
|
||||
if (!draggable_regions_.empty()) {
|
||||
UpdateDraggableRegions(draggable_regions_);
|
||||
} else {
|
||||
// It could be the case that there is a BrowserView but that the main
|
||||
// window does not have a webContents. In this case, the view's own
|
||||
// draggable regions might not be properly updated and so we do that here.
|
||||
for (NativeBrowserView* view : window_->browser_views()) {
|
||||
view->UpdateDraggableRegions(view->GetDraggableRegions());
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void BrowserWindow::ResetBrowserViews() {
|
||||
BaseWindow::ResetBrowserViews();
|
||||
#if defined(OS_MAC)
|
||||
UpdateDraggableRegions(draggable_regions_);
|
||||
if (!draggable_regions_.empty())
|
||||
UpdateDraggableRegions(draggable_regions_);
|
||||
#endif
|
||||
}
|
||||
|
||||
void BrowserWindow::OnDevToolsResized() {
|
||||
UpdateDraggableRegions(draggable_regions_);
|
||||
if (!draggable_regions_.empty()) {
|
||||
UpdateDraggableRegions(draggable_regions_);
|
||||
} else {
|
||||
// It could be the case that there is a BrowserView but that the main
|
||||
// window does not have a webContents. In this case, the view's own
|
||||
// draggable regions might not be properly updated and so we do that here.
|
||||
for (NativeBrowserView* view : window_->browser_views()) {
|
||||
view->UpdateDraggableRegions(view->GetDraggableRegions());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void BrowserWindow::SetVibrancy(v8::Isolate* isolate,
|
||||
|
||||
@@ -39,10 +39,7 @@ void BrowserWindow::OverrideNSWindowContentView(
|
||||
|
||||
void BrowserWindow::UpdateDraggableRegions(
|
||||
const std::vector<mojom::DraggableRegionPtr>& regions) {
|
||||
if (window_->has_frame())
|
||||
return;
|
||||
|
||||
if (!web_contents())
|
||||
if (window_->has_frame() || !web_contents())
|
||||
return;
|
||||
|
||||
// All ControlRegionViews should be added as children of the WebContentsView,
|
||||
|
||||
@@ -1203,13 +1203,9 @@ void NativeWindowViews::SetMenu(ElectronMenuModel* menu_model) {
|
||||
}
|
||||
|
||||
void NativeWindowViews::AddBrowserView(NativeBrowserView* view) {
|
||||
if (!content_view())
|
||||
if (!content_view() || !view)
|
||||
return;
|
||||
|
||||
if (!view) {
|
||||
return;
|
||||
}
|
||||
|
||||
add_browser_view(view);
|
||||
if (view->GetInspectableWebContentsView())
|
||||
content_view()->AddChildView(
|
||||
@@ -1217,13 +1213,9 @@ void NativeWindowViews::AddBrowserView(NativeBrowserView* view) {
|
||||
}
|
||||
|
||||
void NativeWindowViews::RemoveBrowserView(NativeBrowserView* view) {
|
||||
if (!content_view())
|
||||
if (!content_view() || !view)
|
||||
return;
|
||||
|
||||
if (!view) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (view->GetInspectableWebContentsView())
|
||||
content_view()->RemoveChildView(
|
||||
view->GetInspectableWebContentsView()->GetView());
|
||||
@@ -1231,13 +1223,9 @@ void NativeWindowViews::RemoveBrowserView(NativeBrowserView* view) {
|
||||
}
|
||||
|
||||
void NativeWindowViews::SetTopBrowserView(NativeBrowserView* view) {
|
||||
if (!content_view())
|
||||
if (!content_view() || !view)
|
||||
return;
|
||||
|
||||
if (!view) {
|
||||
return;
|
||||
}
|
||||
|
||||
remove_browser_view(view);
|
||||
add_browser_view(view);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user