Index: chrome/browser/ui/browser.cc |
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc |
index 34c7cdd9e223c36e2173be01bb023ce2e25254ae..fe27d313e3cf0f59714df9a00c2388e507eed4d5 100644 |
--- a/chrome/browser/ui/browser.cc |
+++ b/chrome/browser/ui/browser.cc |
@@ -1509,15 +1509,24 @@ void Browser::CloseTab() { |
UserMetrics::RecordAction(UserMetricsAction("CloseTab_Accelerator")); |
if (CanCloseTab()) |
tab_handler_->GetTabStripModel()->CloseSelectedTabs(); |
+ if (fullscreen_for_tab_) { |
Peter Kasting
2011/08/11 17:53:38
Nit: No need for {} (3 places)
koz (OOO until 15th September)
2011/08/15 05:50:27
Done.
|
+ ToggleFullscreenMode(); |
+ } |
} |
void Browser::SelectNextTab() { |
UserMetrics::RecordAction(UserMetricsAction("SelectNextTab")); |
+ if (fullscreen_for_tab_) { |
+ ToggleFullscreenMode(); |
+ } |
tab_handler_->GetTabStripModel()->SelectNextTab(); |
} |
void Browser::SelectPreviousTab() { |
UserMetrics::RecordAction(UserMetricsAction("SelectPrevTab")); |
+ if (fullscreen_for_tab_) { |
+ ToggleFullscreenMode(); |
+ } |
tab_handler_->GetTabStripModel()->SelectPreviousTab(); |
} |
@@ -1598,6 +1607,8 @@ void Browser::ConvertPopupToTabbedBrowser() { |
} |
void Browser::ToggleFullscreenMode() { |
+ bool entering_fullscreen = !window_->IsFullscreen(); |
+ |
#if !defined(OS_MACOSX) |
// In kiosk mode, we always want to be fullscreen. When the browser first |
// starts we're not yet fullscreen, so let the initial toggle go through. |
@@ -1607,7 +1618,7 @@ void Browser::ToggleFullscreenMode() { |
#endif |
UserMetrics::RecordAction(UserMetricsAction("ToggleFullscreen")); |
- window_->SetFullscreen(!window_->IsFullscreen()); |
+ window_->SetFullscreen(entering_fullscreen); |
// Once the window has become fullscreen it'll call back to |
// WindowFullscreenStateChanged(). We don't do this immediately as |
@@ -1619,6 +1630,13 @@ void Browser::ToggleFullscreenMode() { |
#if defined(OS_MACOSX) |
WindowFullscreenStateChanged(); |
#endif |
+ |
+ if (fullscreen_for_tab_ && !entering_fullscreen) { |
+ TabContentsWrapper* tab_contents = GetSelectedTabContentsWrapper(); |
+ RenderViewHost* host = tab_contents->render_view_host(); |
+ host->Send(new ViewMsg_ExitFullscreen(host->routing_id())); |
+ fullscreen_for_tab_ = false; |
+ } |
} |
#if defined(OS_CHROMEOS) |
@@ -3123,8 +3141,15 @@ void Browser::AddNewContents(TabContents* source, |
} |
void Browser::ActivateContents(TabContents* contents) { |
+ int activating_index = |
+ tab_handler_->GetTabStripModel()->GetWrapperIndex(contents); |
+ int active_index = tab_handler_->GetTabStripModel()->active_index(); |
+ |
+ if (fullscreen_for_tab_ && activating_index != active_index) { |
+ ToggleFullscreenMode(); |
+ } |
tab_handler_->GetTabStripModel()->ActivateTabAt( |
- tab_handler_->GetTabStripModel()->GetWrapperIndex(contents), false); |
+ activating_index, false); |
window_->Activate(); |
} |
@@ -3477,6 +3502,20 @@ content::JavaScriptDialogCreator* Browser::GetJavaScriptDialogCreator() { |
return GetJavaScriptDialogCreatorInstance(); |
} |
+void Browser::EnterFullscreenModeForCurrentTab() { |
+ fullscreen_for_tab_ = true; |
Peter Kasting
2011/08/11 17:53:38
It seems like a mistake to set this variable befor
koz (OOO until 15th September)
2011/08/15 05:50:27
I've changed the behaviour here so that instead of
|
+ if (window_->IsFullscreen()) |
+ return; |
+ ToggleFullscreenMode(); |
+} |
+ |
+void Browser::ExitFullscreenMode() { |
+ fullscreen_for_tab_ = false; |
+ if (!window_->IsFullscreen()) |
+ return; |
+ ToggleFullscreenMode(); |
+} |
+ |
/////////////////////////////////////////////////////////////////////////////// |
// Browser, TabContentsWrapperDelegate implementation: |