From d7509b924091be8c5130bad343055dfe39c306d3 Mon Sep 17 00:00:00 2001 From: "brettw@chromium.org" Date: Fri, 22 May 2009 21:27:33 +0000 Subject: Remove some dependencies on Windows-specific files in BrowserView. The usage of WindowWin was unnecessary so I removed it. I created a function in Menu go get the system menu so that can be ported inside views. Review URL: http://codereview.chromium.org/113785 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@16797 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/views/frame/browser_view.cc | 17 +++++++---------- views/controls/menu/menu.h | 4 ++++ views/controls/menu/menu_win.cc | 5 +++++ 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/chrome/browser/views/frame/browser_view.cc b/chrome/browser/views/frame/browser_view.cc index bb213ac..4bf8e1d 100644 --- a/chrome/browser/views/frame/browser_view.cc +++ b/chrome/browser/views/frame/browser_view.cc @@ -56,14 +56,12 @@ #include "grit/generated_resources.h" #include "grit/theme_resources.h" #include "grit/webkit_resources.h" -#include "views/controls/menu/menu_win.h" +#include "views/controls/menu/menu.h" #include "views/controls/scrollbar/native_scroll_bar.h" #include "views/fill_layout.h" #include "views/view.h" #include "views/widget/root_view.h" #include "views/window/non_client_view.h" -#include "views/window/window_win.h" - using base::TimeDelta; @@ -135,7 +133,7 @@ class ResizeCorner : public views::View { ResizeCorner() { } virtual void Paint(gfx::Canvas* canvas) { - views::WindowWin* window = GetWindow(); + views::Window* window = GetWindow(); if (!window || (window->IsMaximized() || window->IsFullscreen())) return; @@ -163,7 +161,7 @@ class ResizeCorner : public views::View { } virtual gfx::Size GetPreferredSize() { - views::WindowWin* window = GetWindow(); + views::Window* window = GetWindow(); return (!window || window->IsMaximized() || window->IsFullscreen()) ? gfx::Size() : GetSize(); } @@ -182,9 +180,9 @@ class ResizeCorner : public views::View { private: // Returns the WindowWin we're displayed in. Returns NULL if we're not // currently in a window. - views::WindowWin* GetWindow() { + views::Window* GetWindow() { views::Widget* widget = GetWidget(); - return widget ? static_cast(widget) : NULL; + return widget ? widget->GetWindow() : NULL; } DISALLOW_COPY_AND_ASSIGN(ResizeCorner); @@ -1300,9 +1298,8 @@ void BrowserView::Init() { } void BrowserView::InitSystemMenu() { - HMENU system_menu = GetSystemMenu(frame_->GetWindow()->GetNativeWindow(), - FALSE); - system_menu_.reset(new views::MenuWin(system_menu)); + system_menu_.reset( + views::Menu::GetSystemMenu(frame_->GetWindow()->GetNativeWindow())); int insertion_index = std::max(0, system_menu_->ItemCount() - 1); // We add the menu items in reverse order so that insertion_index never needs // to change. diff --git a/views/controls/menu/menu.h b/views/controls/menu/menu.h index e07d7e5..0017ac1 100644 --- a/views/controls/menu/menu.h +++ b/views/controls/menu/menu.h @@ -180,6 +180,10 @@ class Menu { AnchorPoint anchor, gfx::NativeView parent); + // Creates a new menu with the contents of the system menu for the given + // parent window. The caller owns the returned pointer. + static Menu* GetSystemMenu(gfx::NativeView parent); + void set_delegate(Delegate* delegate) { delegate_ = delegate; } Delegate* delegate() const { return delegate_; } diff --git a/views/controls/menu/menu_win.cc b/views/controls/menu/menu_win.cc index eab1816..84c3fac 100644 --- a/views/controls/menu/menu_win.cc +++ b/views/controls/menu/menu_win.cc @@ -236,6 +236,11 @@ Menu* Menu::Create(Delegate* delegate, return new MenuWin(delegate, anchor, parent); } +// static +Menu* Menu::GetSystemMenu(gfx::NativeView parent) { + return new views::MenuWin(::GetSystemMenu(parent, FALSE)); +} + MenuWin::MenuWin(Delegate* d, AnchorPoint anchor, HWND owner) : Menu(d, anchor), menu_(CreatePopupMenu()), -- cgit v1.1