Index: chrome/browser/ui/panels/panel_browser_view.cc |
diff --git a/chrome/browser/ui/panels/panel_browser_view.cc b/chrome/browser/ui/panels/panel_browser_view.cc |
index 9873a24b7b06df08190efd61f66d09695053000d..7f7676580f6e0acdbb030deeb44ff54221a9400a 100644 |
--- a/chrome/browser/ui/panels/panel_browser_view.cc |
+++ b/chrome/browser/ui/panels/panel_browser_view.cc |
@@ -303,6 +303,24 @@ bool PanelBrowserView::IsPanelActive() const { |
return IsActive(); |
} |
+void PanelBrowserView::PreventActivationByOS(bool prevent_activation) { |
+#if defined(OS_WIN) && !defined(USE_AURA) |
+ // Set the flags "NoActivate" and "AppWindow" to make sure |
+ // the minimized panels do not get activated by the OS, but |
+ // do appear in the taskbar and Alt-Tab menu. |
+ gfx::NativeWindow native_window = GetNativePanelHandle(); |
+ int style = ::GetWindowLong(native_window, GWL_EXSTYLE); |
+ |
+ if (prevent_activation) |
+ ::SetWindowLong(native_window, GWL_EXSTYLE, |
+ style | WS_EX_NOACTIVATE | WS_EX_APPWINDOW); |
+ else // allow activation |
+ ::SetWindowLong(native_window, GWL_EXSTYLE, |
+ style & ~WS_EX_NOACTIVATE & ~WS_EX_APPWINDOW); |
+#endif |
+} |
+ |
+ |
gfx::NativeWindow PanelBrowserView::GetNativePanelHandle() { |
return GetNativeHandle(); |
} |