| Index: chrome/browser/ui/browser.cc
|
| diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc
|
| index dfdd7301e24b28257b1a7abc9de10ce8a1a8b596..ad082effe7d44a319b886653ee98950fc5548970 100644
|
| --- a/chrome/browser/ui/browser.cc
|
| +++ b/chrome/browser/ui/browser.cc
|
| @@ -191,6 +191,7 @@
|
| #include "webkit/plugins/webplugininfo.h"
|
|
|
| #if defined(OS_WIN)
|
| +#include "base/win/metro.h"
|
| #include "chrome/browser/autofill/autofill_ie_toolbar_import_win.h"
|
| #include "chrome/browser/shell_integration.h"
|
| #include "chrome/browser/ssl/ssl_error_info.h"
|
| @@ -1293,7 +1294,16 @@ browser::NavigateParams Browser::GetSingletonTabNavigateParams(
|
|
|
| void Browser::WindowFullscreenStateChanged() {
|
| fullscreen_controller_->WindowFullscreenStateChanged();
|
| - UpdateCommandsForFullscreenMode(window_->IsFullscreen());
|
| + FullScreenMode fullscreen_mode = FULLSCREEN_DISABLED;
|
| + if (window_->IsFullscreen()) {
|
| +#if defined(OS_WIN)
|
| + fullscreen_mode = window_->IsInMetroSnapMode() ? FULLSCREEN_METRO_SNAP :
|
| + FULLSCREEN_NORMAL;
|
| +#else
|
| + fullscreen_mode = FULLSCREEN_NORMAL;
|
| +#endif
|
| + }
|
| + UpdateCommandsForFullscreenMode(fullscreen_mode);
|
| UpdateBookmarkBarState(BOOKMARK_BAR_STATE_CHANGE_TOGGLE_FULLSCREEN);
|
| }
|
|
|
| @@ -2501,6 +2511,10 @@ void Browser::ExecuteCommandWithDisposition(
|
| case IDC_COPY_URL: WriteCurrentURLToClipboard(); break;
|
| case IDC_SHOW_AS_TAB: ConvertPopupToTabbedBrowser(); break;
|
| case IDC_FULLSCREEN: ToggleFullscreenMode(); break;
|
| +#if defined(OS_WIN)
|
| + case IDC_METRO_SNAP_ENABLE: SetMetroSnapMode(true); break;
|
| + case IDC_METRO_SNAP_DISABLE: SetMetroSnapMode(false); break;
|
| +#endif
|
| #if defined(OS_MACOSX)
|
| case IDC_PRESENTATION_MODE: TogglePresentationMode(); break;
|
| #endif
|
| @@ -4159,6 +4173,11 @@ void Browser::InitCommandState() {
|
| command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_6, normal_window);
|
| command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_7, normal_window);
|
| command_updater_.UpdateCommandEnabled(IDC_SELECT_LAST_TAB, normal_window);
|
| +#if defined(OS_WIN)
|
| + const bool metro_mode = (base::win::GetMetroModule() != NULL);
|
| + command_updater_.UpdateCommandEnabled(IDC_METRO_SNAP_ENABLE, metro_mode);
|
| + command_updater_.UpdateCommandEnabled(IDC_METRO_SNAP_DISABLE, metro_mode);
|
| +#endif
|
| #if defined(OS_MACOSX)
|
| command_updater_.UpdateCommandEnabled(IDC_TABPOSE, normal_window);
|
| command_updater_.UpdateCommandEnabled(IDC_PRESENTATION_MODE,
|
| @@ -4190,7 +4209,7 @@ void Browser::InitCommandState() {
|
| command_updater_.UpdateCommandEnabled(IDC_TOGGLE_SPEECH_INPUT, true);
|
|
|
| // Initialize other commands whose state changes based on fullscreen mode.
|
| - UpdateCommandsForFullscreenMode(false);
|
| + UpdateCommandsForFullscreenMode(FULLSCREEN_DISABLED);
|
|
|
| UpdateCommandsForContentRestrictionState();
|
|
|
| @@ -4330,16 +4349,18 @@ void Browser::MarkHomePageAsChanged(PrefService* pref_service) {
|
| pref_service->SetBoolean(prefs::kHomePageChanged, true);
|
| }
|
|
|
| -void Browser::UpdateCommandsForFullscreenMode(bool is_fullscreen) {
|
| - const bool show_main_ui = IsShowingMainUI(is_fullscreen);
|
| - bool main_not_fullscreen = show_main_ui && !is_fullscreen;
|
| +void Browser::UpdateCommandsForFullscreenMode(FullScreenMode fullscreen_mode) {
|
| + const bool show_main_ui =
|
| + IsShowingMainUI(fullscreen_mode != FULLSCREEN_DISABLED);
|
| + bool main_not_fullscreen = show_main_ui &&
|
| + (fullscreen_mode == FULLSCREEN_DISABLED);
|
|
|
| // Navigation commands
|
| command_updater_.UpdateCommandEnabled(IDC_OPEN_CURRENT_URL, show_main_ui);
|
|
|
| // Window management commands
|
| command_updater_.UpdateCommandEnabled(IDC_SHOW_AS_TAB,
|
| - type_ != TYPE_TABBED && !is_fullscreen);
|
| + type_ != TYPE_TABBED && (fullscreen_mode == FULLSCREEN_DISABLED));
|
|
|
| // Focus various bits of UI
|
| command_updater_.UpdateCommandEnabled(IDC_FOCUS_TOOLBAR, show_main_ui);
|
| @@ -4376,6 +4397,11 @@ void Browser::UpdateCommandsForFullscreenMode(bool is_fullscreen) {
|
| command_updater_.UpdateCommandEnabled(IDC_PROFILING_ENABLED, show_main_ui);
|
| #endif
|
|
|
| + // Disable explicit fullscreen toggling when in metro snap mode.
|
| + command_updater_.UpdateCommandEnabled(
|
| + IDC_FULLSCREEN,
|
| + fullscreen_mode != FULLSCREEN_METRO_SNAP);
|
| +
|
| UpdateCommandsForBookmarkBar();
|
| UpdateCommandsForMultipleProfiles();
|
| }
|
|
|