chrome: win: Fix taskbar grouping of PiP and DevTools windows (fixes #3641)
This commit is contained in:
parent
7dbf26919a
commit
1bfee76f5f
|
@ -141,6 +141,10 @@ class BrowserDelegate : public content::WebContentsDelegate {
|
|||
|
||||
// Called at the end of a fullscreen transition.
|
||||
virtual void WindowFullscreenStateChanged() {}
|
||||
|
||||
// Returns true if this browser has a Views-hosted opener. Only
|
||||
// applicable for Browsers of type picture_in_picture and devtools.
|
||||
virtual bool HasViewsHostedOpener() const { return false; }
|
||||
};
|
||||
|
||||
} // namespace cef
|
||||
|
|
|
@ -426,6 +426,12 @@ void ChromeBrowserDelegate::WindowFullscreenStateChanged() {
|
|||
#endif
|
||||
}
|
||||
|
||||
bool ChromeBrowserDelegate::HasViewsHostedOpener() const {
|
||||
DCHECK(browser_->is_type_picture_in_picture() ||
|
||||
browser_->is_type_devtools());
|
||||
return opener_host_ && opener_host_->is_views_hosted();
|
||||
}
|
||||
|
||||
void ChromeBrowserDelegate::WebContentsCreated(
|
||||
content::WebContents* source_contents,
|
||||
int opener_render_process_id,
|
||||
|
|
|
@ -81,6 +81,7 @@ class ChromeBrowserDelegate : public cef::BrowserDelegate {
|
|||
const std::optional<SkRegion> GetDraggableRegion() const override;
|
||||
void UpdateDraggableRegion(const SkRegion& region) override;
|
||||
void WindowFullscreenStateChanged() override;
|
||||
bool HasViewsHostedOpener() const override;
|
||||
|
||||
// WebContentsDelegate methods:
|
||||
void WebContentsCreated(content::WebContents* source_contents,
|
||||
|
|
|
@ -712,5 +712,10 @@ patches = [
|
|||
# alloy: Don't create GPUCache directory when cache_path is empty.
|
||||
# https://github.com/chromiumembedded/cef/issues/3617
|
||||
'name': 'content_renderer_host_3617'
|
||||
}
|
||||
},
|
||||
{
|
||||
# chrome: win: Fix taskbar grouping of PiP and DevTools windows.
|
||||
# https://github.com/chromiumembedded/cef/issues/3641
|
||||
'name': 'win_taskbar_group_3641'
|
||||
},
|
||||
]
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
diff --git chrome/browser/ui/views/frame/browser_window_property_manager_win.cc chrome/browser/ui/views/frame/browser_window_property_manager_win.cc
|
||||
index 1a62480aee22c..9da572856c03b 100644
|
||||
--- chrome/browser/ui/views/frame/browser_window_property_manager_win.cc
|
||||
+++ chrome/browser/ui/views/frame/browser_window_property_manager_win.cc
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "base/functional/bind.h"
|
||||
#include "base/strings/utf_string_conversions.h"
|
||||
#include "base/win/windows_version.h"
|
||||
+#include "cef/libcef/features/features.h"
|
||||
#include "chrome/browser/browser_process.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/browser/profiles/profile_manager.h"
|
||||
@@ -49,6 +50,16 @@ void BrowserWindowPropertyManager::UpdateWindowProperties() {
|
||||
const Browser* browser = view_->browser();
|
||||
Profile* profile = browser->profile();
|
||||
|
||||
+#if BUILDFLAG(ENABLE_CEF)
|
||||
+ if (browser->cef_delegate() &&
|
||||
+ (browser->is_type_picture_in_picture() ||
|
||||
+ browser->is_type_devtools()) &&
|
||||
+ browser->cef_delegate()->HasViewsHostedOpener()) {
|
||||
+ // Don't create a separate taskbar group.
|
||||
+ return;
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
// Set the app user model id for this application to that of the application
|
||||
// name. See http://crbug.com/7028.
|
||||
std::wstring app_id =
|
Loading…
Reference in New Issue