| Index: ash/wm/panels/panel_layout_manager.cc
|
| diff --git a/ash/wm/panels/panel_layout_manager.cc b/ash/wm/panels/panel_layout_manager.cc
|
| index 9392303b8518bb5a68eb7cfd85da073e0c6fd955..6ac06745bf842f40eb1e0f6f2de4a1e6cfc56d44 100644
|
| --- a/ash/wm/panels/panel_layout_manager.cc
|
| +++ b/ash/wm/panels/panel_layout_manager.cc
|
| @@ -57,6 +57,11 @@ const int kPanelSlideInOffset = 20;
|
| const int kArrowWidth = 18;
|
| const int kArrowHeight = 9;
|
|
|
| +// When a window layer gets hidden, and the window remains "logically visible",
|
| +// it is illegal to fade the layer to 0. We therefore use a fraction which is
|
| +// resolving to an alpha of 0 but tells a comparison otherwise.
|
| +const float kWindowLayerNotShown = 0.001f;
|
| +
|
| class CalloutWidgetBackground : public views::Background {
|
| public:
|
| CalloutWidgetBackground() : alignment_(SHELF_ALIGNMENT_BOTTOM) {
|
| @@ -243,7 +248,7 @@ class PanelCalloutWidget : public views::Widget {
|
| background_ = new CalloutWidgetBackground;
|
| content_view->set_background(background_);
|
| SetContentsView(content_view);
|
| - GetNativeWindow()->layer()->SetOpacity(0);
|
| + GetNativeWindow()->layer()->SetOpacity(kWindowLayerNotShown);
|
| }
|
|
|
| // Weak pointer owned by this widget's content view.
|
| @@ -366,7 +371,7 @@ void PanelLayoutManager::OnWindowAddedToLayout(aura::Window* child) {
|
| if (child != dragged_panel_) {
|
| // Set the panel to 0 opacity until it has been positioned to prevent it
|
| // from flashing briefly at position (0, 0).
|
| - child->layer()->SetOpacity(0);
|
| + child->layer()->SetOpacity(kWindowLayerNotShown);
|
| panel_info.slide_in = true;
|
| }
|
| panel_windows_.push_back(panel_info);
|
| @@ -561,7 +566,7 @@ void PanelLayoutManager::MinimizePanel(aura::Window* panel) {
|
| PanelList::iterator found =
|
| std::find(panel_windows_.begin(), panel_windows_.end(), panel);
|
| if (found != panel_windows_.end()) {
|
| - layer->SetOpacity(0);
|
| + layer->SetOpacity(kWindowLayerNotShown);
|
| // The next time the window is visible it should slide into place.
|
| found->slide_in = true;
|
| }
|
| @@ -857,12 +862,12 @@ void PanelLayoutManager::UpdateCallouts() {
|
| panel->layer()->GetTargetTransform().IsIdentity()) {
|
| if (distance_until_over_panel > 0 &&
|
| slide_distance >= distance_until_over_panel) {
|
| - layer->SetOpacity(0);
|
| + layer->SetOpacity(kWindowLayerNotShown);
|
| // If the panel is not yet over the callout, then delay fading in
|
| // the callout until after the panel should be over it.
|
| int delay = kPanelSlideDurationMilliseconds *
|
| distance_until_over_panel / slide_distance;
|
| - layer->SetOpacity(0);
|
| + layer->SetOpacity(kWindowLayerNotShown);
|
| layer->GetAnimator()->StopAnimating();
|
| layer->GetAnimator()->SchedulePauseForProperties(
|
| base::TimeDelta::FromMilliseconds(delay),
|
|
|