Index: chrome/browser/ui/views/window.cc |
diff --git a/chrome/browser/ui/views/window.cc b/chrome/browser/ui/views/window.cc |
index d3b0e561b988163014121d08bc3a7c7a9af70c4c..d4d8daa7c324d8d2f8ec7c706c42fbee58823234 100644 |
--- a/chrome/browser/ui/views/window.cc |
+++ b/chrome/browser/ui/views/window.cc |
@@ -8,8 +8,10 @@ |
#include "ui/views/widget/widget.h" |
#if defined(USE_AURA) |
+#include "ash/ash_switches.h" |
#include "ash/shell.h" |
#include "ash/shell_window_ids.h" |
+#include "base/command_line.h" |
#include "ui/aura/root_window.h" |
#include "ui/aura/window.h" |
#endif |
@@ -33,6 +35,33 @@ |
// The remainder of the code here is dealing with the legacy CrOS WM and |
// can also be removed. |
+namespace { |
+ |
+views::Widget* CreateViewsWindowWithParent(gfx::NativeWindow parent, |
+ views::WidgetDelegate* delegate) { |
+ views::Widget* widget = new views::Widget; |
+ views::Widget::InitParams params; |
+ params.delegate = delegate; |
+#if defined(OS_WIN) || defined(USE_AURA) |
+ params.parent = parent; |
+#endif |
+#if defined(USE_AURA) |
+ // Outside of compact mode, dialog windows may have translucent frames. |
+ // TODO(jamescook): Find a better way to set this. |
+ CommandLine* cmd = CommandLine::ForCurrentProcess(); |
+ bool compact_window_mode = |
+ cmd->HasSwitch(ash::switches::kAuraForceCompactWindowMode) || |
+ cmd->GetSwitchValueASCII(ash::switches::kAuraWindowMode) == |
+ ash::switches::kAuraWindowModeCompact; |
+ if (!compact_window_mode) |
+ params.transparent = true; |
+#endif |
+ widget->Init(params); |
+ return widget; |
+} |
+ |
+} // namespace |
+ |
namespace browser { |
views::Widget* CreateViewsWindow(gfx::NativeWindow parent, |
@@ -41,7 +70,7 @@ views::Widget* CreateViewsWindow(gfx::NativeWindow parent, |
#if defined(OS_CHROMEOS) && !defined(USE_AURA) |
return chromeos::BubbleWindow::Create(parent, style, delegate); |
#else |
- return views::Widget::CreateWindowWithParent(delegate, parent); |
+ return CreateViewsWindowWithParent(parent, delegate); |
#endif |
} |