| Index: chrome/browser/ui/views/frame/browser_frame_win.cc
|
| ===================================================================
|
| --- chrome/browser/ui/views/frame/browser_frame_win.cc (revision 137335)
|
| +++ chrome/browser/ui/views/frame/browser_frame_win.cc (working copy)
|
| @@ -32,6 +32,7 @@
|
| #include "grit/generated_resources.h"
|
| #include "grit/theme_resources.h"
|
| #include "ui/base/models/simple_menu_model.h"
|
| +#include "ui/base/resource/resource_bundle.h"
|
| #include "ui/base/theme_provider.h"
|
| #include "ui/gfx/font.h"
|
| #include "ui/views/controls/menu/native_menu_win.h"
|
| @@ -58,11 +59,25 @@
|
|
|
| #if !defined(USE_AURA)
|
| extern "C" {
|
| +// Windows metro exported functions from metro_driver.
|
| typedef void (*SetFrameWindow)(HWND window);
|
| typedef void (*CloseFrameWindow)(HWND window);
|
| +typedef void (*FlipFrameWindows)();
|
| }
|
| #endif // USE_AURA
|
|
|
| +views::Button* MakeWindowSwitcherButton(views::ButtonListener* listener) {
|
| + views::ImageButton* switcher_button = new views::ImageButton(listener);
|
| + switcher_button->SetImage(
|
| + views::ImageButton::BS_NORMAL,
|
| + ui::ResourceBundle::GetSharedInstance().GetBitmapNamed(
|
| + IDR_PAGEINFO_WARNING_MINOR));
|
| + // TODO(cpu): Replace IDR_PAGEINFO_WARNING_MINOR with actual image.
|
| + switcher_button->SetImageAlignment(views::ImageButton::ALIGN_CENTER,
|
| + views::ImageButton::ALIGN_MIDDLE);
|
| + return switcher_button;
|
| +}
|
| +
|
| ///////////////////////////////////////////////////////////////////////////////
|
| // BrowserFrameWin, public:
|
|
|
| @@ -73,6 +88,8 @@
|
| browser_frame_(browser_frame),
|
| system_menu_delegate_(new SystemMenuModelDelegate(browser_view,
|
| browser_view->browser())) {
|
| + if (base::win::GetMetroModule())
|
| + browser_view->SetWindowSwitcherButton(MakeWindowSwitcherButton(this));
|
| }
|
|
|
| BrowserFrameWin::~BrowserFrameWin() {
|
| @@ -263,6 +280,19 @@
|
| UpdateDWMFrame();
|
| }
|
|
|
| +void BrowserFrameWin::ButtonPressed(views::Button* sender,
|
| + const views::Event& event) {
|
| + HMODULE metro = base::win::GetMetroModule();
|
| + if (!metro)
|
| + return;
|
| + // Tell the metro_driver to flip our window. This causes the current
|
| + // browser window to be hidden and the next window to be shown.
|
| + static FlipFrameWindows flip_window_fn = reinterpret_cast<FlipFrameWindows>(
|
| + ::GetProcAddress(metro, "FlipFrameWindows"));
|
| + if (flip_window_fn)
|
| + flip_window_fn();
|
| +}
|
| +
|
| LRESULT BrowserFrameWin::OnWndProc(UINT message,
|
| WPARAM w_param,
|
| LPARAM l_param) {
|
|
|