| Index: ash/shelf/shelf_layout_manager.cc
|
| diff --git a/ash/shelf/shelf_layout_manager.cc b/ash/shelf/shelf_layout_manager.cc
|
| index 3e9b8f90b40fea44966d50690266f964c292e63b..8210b5beaeabaedc3b0b32ad64099a165e115b12 100644
|
| --- a/ash/shelf/shelf_layout_manager.cc
|
| +++ b/ash/shelf/shelf_layout_manager.cc
|
| @@ -283,7 +283,8 @@ void ShelfLayoutManager::LayoutShelf() {
|
| if (shelf_->launcher())
|
| shelf_->launcher()->SetLauncherViewBounds(
|
| target_bounds.launcher_bounds_in_shelf);
|
| - GetLayer(shelf_->status_area_widget())->SetOpacity(target_bounds.opacity);
|
| + GetLayer(shelf_->status_area_widget())->SetOpacity(
|
| + target_bounds.status_opacity);
|
| // TODO(harrym): Once status area widget is a child view of shelf
|
| // this can be simplified.
|
| gfx::Rect status_bounds = target_bounds.status_bounds_in_shelf;
|
| @@ -574,12 +575,6 @@ void ShelfLayoutManager::SetState(ShelfVisibilityState visibility_state) {
|
| state.window_state = workspace_controller_ ?
|
| workspace_controller_->GetWindowState() : WORKSPACE_WINDOW_STATE_DEFAULT;
|
|
|
| - // It's possible for SetState() when a window becomes maximized but the state
|
| - // won't have changed value. Do the dimming check before the early exit.
|
| - shelf_->SetDimsShelf(
|
| - (state.visibility_state == SHELF_VISIBLE) &&
|
| - state.window_state == WORKSPACE_WINDOW_STATE_MAXIMIZED);
|
| -
|
| if (state_.Equals(state))
|
| return; // Nothing changed.
|
|
|
| @@ -634,18 +629,11 @@ void ShelfLayoutManager::SetState(ShelfVisibilityState visibility_state) {
|
| old_state.visibility_state != SHELF_VISIBLE) {
|
| change_type = BackgroundAnimator::CHANGE_IMMEDIATE;
|
| } else {
|
| - // Delay updating the background when going from SHELF_AUTO_HIDE_SHOWN to
|
| - // SHELF_AUTO_HIDE_HIDDEN until the shelf animates out. Otherwise during the
|
| - // animation you see the background change.
|
| - // Also delay the animation when the shelf was hidden, and has just been
|
| - // made visible (e.g. using a gesture-drag).
|
| - if (state.visibility_state == SHELF_AUTO_HIDE &&
|
| - state.auto_hide_state == SHELF_AUTO_HIDE_HIDDEN &&
|
| - old_state.visibility_state == SHELF_AUTO_HIDE) {
|
| - delay_background_change = true;
|
| - } else if (state.visibility_state == SHELF_VISIBLE &&
|
| - old_state.visibility_state == SHELF_AUTO_HIDE &&
|
| - old_state.auto_hide_state == SHELF_AUTO_HIDE_HIDDEN) {
|
| + // Delay the animation when the shelf was hidden, and has just been made
|
| + // visible (e.g. using a gesture-drag).
|
| + if (state.visibility_state == SHELF_VISIBLE &&
|
| + old_state.visibility_state == SHELF_AUTO_HIDE &&
|
| + old_state.auto_hide_state == SHELF_AUTO_HIDE_HIDDEN) {
|
| delay_background_change = true;
|
| }
|
| }
|
| @@ -656,7 +644,14 @@ void ShelfLayoutManager::SetState(ShelfVisibilityState visibility_state) {
|
| // UpdateShelfBackground deletes itself when the animation is done.
|
| update_shelf_observer_ = new UpdateShelfObserver(this);
|
| status_animation_setter.AddObserver(update_shelf_observer_);
|
| + } else {
|
| + UpdateShelfBackground(change_type);
|
| }
|
| +
|
| + shelf_->SetDimsShelf(
|
| + state.visibility_state == SHELF_VISIBLE &&
|
| + state.window_state == WORKSPACE_WINDOW_STATE_MAXIMIZED);
|
| +
|
| ui::Layer* layer = GetLayer(shelf_->status_area_widget());
|
| // TODO(harrym): Remove when status_area is view (crbug.com/180422).
|
| gfx::Rect status_bounds = target_bounds.status_bounds_in_shelf;
|
| @@ -669,8 +664,6 @@ void ShelfLayoutManager::SetState(ShelfVisibilityState visibility_state) {
|
| Shell::GetInstance()->SetDisplayWorkAreaInsets(
|
| root_window_, target_bounds.work_area_insets);
|
| UpdateHitTestBounds();
|
| - if (!delay_background_change)
|
| - UpdateShelfBackground(change_type);
|
|
|
| // OnAutoHideStateChanged Should be emitted when:
|
| // - firstly state changed to auto-hide from other state
|
| @@ -795,7 +788,8 @@ void ShelfLayoutManager::CalculateTargetBounds(
|
| state.visibility_state == SHELF_AUTO_HIDE) ? 1.0f : 0.0f;
|
| target_bounds->status_opacity =
|
| (state.visibility_state == SHELF_AUTO_HIDE &&
|
| - state.auto_hide_state == SHELF_AUTO_HIDE_HIDDEN) ?
|
| + state.auto_hide_state == SHELF_AUTO_HIDE_HIDDEN &&
|
| + gesture_drag_status_ != GESTURE_DRAG_IN_PROGRESS) ?
|
| 0.0f : target_bounds->opacity;
|
|
|
| if (gesture_drag_status_ == GESTURE_DRAG_IN_PROGRESS)
|
|
|