Index: desktop_aura/desktop_screen_win.cc =================================================================== --- desktop_aura/desktop_screen_win.cc (revision 261035) +++ desktop_aura/desktop_screen_win.cc (working copy) @@ -54,6 +54,8 @@ } HWND DesktopScreenWin::GetHWNDFromNativeView(gfx::NativeView window) const { + if (!window) + return NULL; aura::WindowTreeHost* host = window->GetHost(); return host ? host->GetAcceleratedWidget() : NULL; } Index: desktop_aura/desktop_window_tree_host_win.cc =================================================================== --- desktop_aura/desktop_window_tree_host_win.cc (revision 261035) +++ desktop_aura/desktop_window_tree_host_win.cc (working copy) @@ -130,7 +130,9 @@ native_widget_delegate_); HWND parent_hwnd = NULL; - if (params.parent && params.parent->GetHost()) + if (params.parent_widget) + parent_hwnd = params.parent_widget; + else if (params.parent && params.parent->GetHost()) parent_hwnd = params.parent->GetHost()->GetAcceleratedWidget(); message_handler_->set_remove_standard_frame(params.remove_standard_frame); Index: desktop_aura/desktop_window_tree_host_win.h =================================================================== --- desktop_aura/desktop_window_tree_host_win.h (revision 261035) +++ desktop_aura/desktop_window_tree_host_win.h (working copy) @@ -214,6 +214,7 @@ LPARAM l_param) OVERRIDE; virtual bool HandleScrollEvent(const ui::ScrollEvent& event) OVERRIDE; + public: Widget* GetWidget(); const Widget* GetWidget() const; HWND GetHWND() const; Index: widget.cc =================================================================== --- widget.cc (revision 261035) +++ widget.cc (working copy) @@ -122,6 +122,7 @@ show_state(ui::SHOW_STATE_DEFAULT), double_buffer(false), parent(NULL), + parent_widget(NULL), native_widget(NULL), desktop_window_tree_host(NULL), top_level(false), @@ -148,6 +149,7 @@ show_state(ui::SHOW_STATE_DEFAULT), double_buffer(false), parent(NULL), + parent_widget(NULL), native_widget(NULL), desktop_window_tree_host(NULL), top_level(false), @@ -386,7 +388,12 @@ Minimize(); } else if (params.delegate) { SetContentsView(params.delegate->GetContentsView()); - SetInitialBoundsForFramelessWindow(params.bounds); + if (params.parent_widget) { + // Set the bounds directly instead of applying an inset. + SetBounds(params.bounds); + } else { + SetInitialBoundsForFramelessWindow(params.bounds); + } } native_widget_initialized_ = true; } Index: widget.h =================================================================== --- widget.h (revision 261035) +++ widget.h (working copy) @@ -200,6 +200,7 @@ // Should the widget be double buffered? Default is false. bool double_buffer; gfx::NativeView parent; + gfx::AcceleratedWidget parent_widget; // Specifies the initial bounds of the Widget. Default is empty, which means // the NativeWidget may specify a default size. If the parent is specified, // |bounds| is in the parent's coordinate system. If the parent is not