From 4e2d3f3d126d39c02006e7c3966484477c33a764 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Fri, 4 Oct 2013 08:52:45 +0800 Subject: [PATCH] win: Make native window a views::View. --- browser/native_window_win.cc | 19 ++++++++++++++++++- browser/native_window_win.h | 9 ++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/browser/native_window_win.cc b/browser/native_window_win.cc index 4bacb0b0ba7..9219afdcef9 100644 --- a/browser/native_window_win.cc +++ b/browser/native_window_win.cc @@ -401,6 +401,23 @@ void NativeWindowWin::HandleKeyboardEvent( event.os_event.wParam, event.os_event.lParam); } +void NativeWindowWin::Layout() { + DCHECK(web_view_); + web_view_->SetBounds(0, 0, width(), height()); + OnViewWasResized(); +} + +void NativeWindowWin::ViewHierarchyChanged(bool is_add, + views::View* parent, + views::View* child) { + if (is_add && child == this) + AddChildView(web_view_); +} + +void NativeWindowWin::DeleteDelegate() { + // Do nothing, window is managed by users. +} + bool NativeWindowWin::CanResize() const { return resizable_; } @@ -430,7 +447,7 @@ const views::Widget* NativeWindowWin::GetWidget() const { } views::ClientView* NativeWindowWin::CreateClientView(views::Widget* widget) { - return new NativeWindowClientView(widget, web_view_, this); + return new NativeWindowClientView(widget, this, this); } views::NonClientFrameView* NativeWindowWin::CreateNonClientFrameView( diff --git a/browser/native_window_win.h b/browser/native_window_win.h index a4406fc01b2..499cee3f1e1 100644 --- a/browser/native_window_win.h +++ b/browser/native_window_win.h @@ -26,7 +26,7 @@ namespace atom { class Menu2; class NativeWindowWin : public NativeWindow, - public views::WidgetDelegate { + public views::WidgetDelegateView { public: explicit NativeWindowWin(content::WebContents* web_contents, base::DictionaryValue* options); @@ -83,7 +83,14 @@ class NativeWindowWin : public NativeWindow, content::WebContents*, const content::NativeWebKeyboardEvent&) OVERRIDE; + // Overridden from views::View: + virtual void Layout() OVERRIDE; + virtual void ViewHierarchyChanged(bool is_add, + views::View* parent, + views::View* child) OVERRIDE; + // Overridden from views::WidgetDelegate: + virtual void DeleteDelegate() OVERRIDE; virtual bool CanResize() const OVERRIDE; virtual bool CanMaximize() const OVERRIDE; virtual string16 GetWindowTitle() const OVERRIDE;