Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5057)

Unified Diff: chrome/browser/ui/views/frame/browser_frame_win.cc

Issue 10388156: Adding the flip windows button to the browser window (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/views/frame/browser_frame_win.h ('k') | chrome/browser/ui/views/frame/browser_view.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) {
« no previous file with comments | « chrome/browser/ui/views/frame/browser_frame_win.h ('k') | chrome/browser/ui/views/frame/browser_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698