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

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

Issue 14634003: Fix the size of the tabs when exiting immersive fullscreen with the tab indicators hidden (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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/immersive_mode_controller_ash.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/views/frame/immersive_mode_controller_ash.cc
diff --git a/chrome/browser/ui/views/frame/immersive_mode_controller_ash.cc b/chrome/browser/ui/views/frame/immersive_mode_controller_ash.cc
index 8ce7e14e8732f3d3d632ab74be83d4081d796731..9cd5a22956cc4d5843ceb65ad02561cd161549dd 100644
--- a/chrome/browser/ui/views/frame/immersive_mode_controller_ash.cc
+++ b/chrome/browser/ui/views/frame/immersive_mode_controller_ash.cc
@@ -238,7 +238,7 @@ void ImmersiveModeControllerAsh::AnchoredWidgetManager::UpdateRevealedLock() {
// anchored to the top-of-window views while the top-of-window views are
// animating. Skip to the end of the reveal animation instead.
// We do not query the controller's reveal state because we may be called
- // as a result of LayoutBrowserView() in MaybeStartReveal() when
+ // as a result of LayoutBrowserRootView() in MaybeStartReveal() when
// |reveal_state_| is SLIDING_OPEN but no animation is running yet.
ui::Layer* top_container_layer =
controller_->browser_view_->top_container()->layer();
@@ -419,13 +419,16 @@ void ImmersiveModeControllerAsh::SetEnabled(bool enabled) {
// Init() is called.
EnableWindowObservers(true);
+ UpdateUseMinimalChrome(LAYOUT_NO);
+
if (enabled_) {
// Animate enabling immersive mode by sliding out the top-of-window views.
// No animation occurs if a lock is holding the top-of-window views open.
// Do a reveal to set the initial state for the animation. (And any
// required state in case the animation cannot run because of a lock holding
- // the top-of-window views open.)
+ // the top-of-window views open.) This call has the side effect of relaying
+ // out |browser_view_|'s root view.
MaybeStartReveal(ANIMATE_NO);
// Reset the mouse and the focus revealed locks so that they do not affect
@@ -448,14 +451,12 @@ void ImmersiveModeControllerAsh::SetEnabled(bool enabled) {
// Snap immediately to the closed state.
reveal_state_ = CLOSED;
EnablePaintToLayer(false);
- browser_view_->GetWidget()->non_client_view()->frame_view()->
- ResetWindowControls();
browser_view_->tabstrip()->SetImmersiveStyle(false);
- }
- // Don't need explicit layout because we're inside a fullscreen transition
- // and it blocks layout calls.
- UpdateUseMinimalChrome(LAYOUT_NO);
+ // Relayout the root view because disabling immersive fullscreen may have
+ // changed the result of NonClientFrameView::GetBoundsForClientView().
+ LayoutBrowserRootView();
+ }
}
bool ImmersiveModeControllerAsh::IsEnabled() const {
@@ -763,7 +764,7 @@ void ImmersiveModeControllerAsh::UpdateUseMinimalChrome(Layout layout) {
// If the top-of-window views are revealed or animating, the change will
// take effect with the layout once the top-of-window views are closed.
if (layout == LAYOUT_YES && reveal_state_ == CLOSED)
- LayoutBrowserView(true);
+ LayoutBrowserRootView();
}
}
@@ -801,7 +802,8 @@ void ImmersiveModeControllerAsh::MaybeStartReveal(Animate animate) {
// Ensure window caption buttons are updated and the view bounds are
// computed at normal (non-immersive-style) size.
- LayoutBrowserView(false);
+ browser_view_->tabstrip()->SetImmersiveStyle(false);
+ LayoutBrowserRootView();
// Do not do any more processing if LayoutBrowserView() changed
// |reveal_state_|.
@@ -847,11 +849,10 @@ void ImmersiveModeControllerAsh::EnablePaintToLayer(bool enable) {
bookmark_bar->SetPaintToLayer(false);
}
-void ImmersiveModeControllerAsh::LayoutBrowserView(bool immersive_style) {
+void ImmersiveModeControllerAsh::LayoutBrowserRootView() {
// Update the window caption buttons.
browser_view_->GetWidget()->non_client_view()->frame_view()->
ResetWindowControls();
- browser_view_->tabstrip()->SetImmersiveStyle(immersive_style);
browser_view_->frame()->GetRootView()->Layout();
}
@@ -902,7 +903,8 @@ void ImmersiveModeControllerAsh::OnSlideClosedAnimationCompleted() {
// Layers aren't needed after animation completes.
EnablePaintToLayer(false);
// Update tabstrip for closed state.
- LayoutBrowserView(true);
+ browser_view_->tabstrip()->SetImmersiveStyle(true);
+ LayoutBrowserRootView();
}
void ImmersiveModeControllerAsh::DoAnimation(
« no previous file with comments | « chrome/browser/ui/views/frame/immersive_mode_controller_ash.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698