Chromium Code Reviews| 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 b2b4094e96406722e90cf76ef0460f1205e6dafd..e0b56dcd31924b8cff52738f6e1a2a1cc19dd7de 100644 |
| --- a/ash/wm/panels/panel_layout_manager.cc |
| +++ b/ash/wm/panels/panel_layout_manager.cc |
| @@ -33,6 +33,7 @@ |
| #include "ui/gfx/geometry/vector2d.h" |
| #include "ui/views/background.h" |
| #include "ui/views/widget/widget.h" |
| +#include "ui/wm/core/window_util.h" |
| #include "ui/wm/public/activation_client.h" |
| using aura::Window; |
| @@ -488,11 +489,9 @@ void PanelLayoutManager::OnPostWindowStateTypeChange( |
| if (restore_windows_on_shelf_visible_) { |
| if (window_state->IsMinimized()) { |
| MinimizePanel(window_state->window()); |
| - restore_windows_on_shelf_visible_->Remove( |
| - window_state->window()->aura_window()); |
| + restore_windows_on_shelf_visible_->Remove(window_state->window()); |
| } else { |
| - restore_windows_on_shelf_visible_->Add( |
| - window_state->window()->aura_window()); |
| + restore_windows_on_shelf_visible_->Add(window_state->window()); |
| } |
| return; |
| } |
| @@ -540,7 +539,7 @@ void PanelLayoutManager::WillChangeVisibilityState( |
| std::unique_ptr<aura::WindowTracker> restore_windows( |
| std::move(restore_windows_on_shelf_visible_)); |
| for (aura::Window* window : restore_windows->windows()) |
| - RestorePanel(WmWindow::Get(window)); |
| + RestorePanel(window); |
| } |
| return; |
| } |
| @@ -573,33 +572,33 @@ void PanelLayoutManager::OnShelfIconPositionsChanged() { |
| //////////////////////////////////////////////////////////////////////////////// |
| // PanelLayoutManager private implementation: |
| -void PanelLayoutManager::MinimizePanel(WmWindow* panel) { |
| +void PanelLayoutManager::MinimizePanel(aura::Window* panel) { |
| // Clusterfuzz can trigger panel accelerators before the shelf is created. |
| // TODO(jamescook): Revert this after http://crbug.com/648964 is fixed. |
| if (!shelf_) |
| return; |
| - panel->SetVisibilityAnimationType( |
| - wm::WINDOW_VISIBILITY_ANIMATION_TYPE_MINIMIZE); |
| - ui::Layer* layer = panel->GetLayer(); |
| + ::wm::SetWindowVisibilityAnimationType( |
| + panel, wm::WINDOW_VISIBILITY_ANIMATION_TYPE_MINIMIZE); |
| + ui::Layer* layer = panel->layer(); |
| ui::ScopedLayerAnimationSettings panel_slide_settings(layer->GetAnimator()); |
| panel_slide_settings.SetPreemptionStrategy( |
| ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); |
| panel_slide_settings.SetTransitionDuration( |
| base::TimeDelta::FromMilliseconds(kPanelSlideDurationMilliseconds)); |
| - gfx::Rect bounds(panel->GetBounds()); |
| + gfx::Rect bounds(panel->bounds()); |
| bounds.Offset(GetSlideInAnimationOffset(shelf_->GetAlignment())); |
| - panel->SetBoundsDirect(bounds); |
| + SetChildBoundsDirect(panel, bounds); |
|
msw
2017/05/23 05:46:55
q: The impls aren't obviously equivalent, should t
sky
2017/05/23 17:14:38
You are an awesome reviewer!
I was worried about t
|
| panel->Hide(); |
| layer->SetOpacity(0); |
| - if (panel->IsActive()) |
| - panel->Deactivate(); |
| + if (::wm::IsActiveWindow(panel)) |
| + ::wm::DeactivateWindow(panel); |
| Relayout(); |
| } |
| -void PanelLayoutManager::RestorePanel(WmWindow* panel) { |
| - PanelList::iterator found = |
| - std::find(panel_windows_.begin(), panel_windows_.end(), panel); |
| +void PanelLayoutManager::RestorePanel(aura::Window* panel) { |
| + PanelList::iterator found = std::find( |
| + panel_windows_.begin(), panel_windows_.end(), WmWindow::Get(panel)); |
| DCHECK(found != panel_windows_.end()); |
| found->slide_in = true; |
| Relayout(); |
| @@ -736,7 +735,8 @@ void PanelLayoutManager::Relayout() { |
| layer->SetOpacity(0); |
| gfx::Rect initial_bounds(bounds); |
| initial_bounds.Offset(GetSlideInAnimationOffset(shelf_->alignment())); |
| - visible_panels[i].window->SetBoundsDirect(initial_bounds); |
| + SetChildBoundsDirect(visible_panels[i].window->aura_window(), |
| + initial_bounds); |
| // Set on shelf so that the panel animates into its target position. |
| on_shelf = true; |
| } |
| @@ -748,7 +748,7 @@ void PanelLayoutManager::Relayout() { |
| ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); |
| panel_slide_settings.SetTransitionDuration( |
| base::TimeDelta::FromMilliseconds(kPanelSlideDurationMilliseconds)); |
| - visible_panels[i].window->SetBoundsDirect(bounds); |
| + SetChildBoundsDirect(visible_panels[i].window->aura_window(), bounds); |
| if (slide_in) { |
| layer->SetOpacity(1); |
| visible_panels[i].window->Show(); |
| @@ -756,7 +756,7 @@ void PanelLayoutManager::Relayout() { |
| } else { |
| // If the shelf moved don't animate, move immediately to the new |
| // target location. |
| - visible_panels[i].window->SetBoundsDirect(bounds); |
| + SetChildBoundsDirect(visible_panels[i].window->aura_window(), bounds); |
| } |
| } |
| @@ -871,7 +871,7 @@ void PanelLayoutManager::UpdateCallouts() { |
| callout_bounds = callout_widget_window->GetParent()->ConvertRectFromScreen( |
| callout_bounds); |
| - callout_widget_window->SetBoundsDirect(callout_bounds); |
| + SetChildBoundsDirect(callout_widget_window->aura_window(), callout_bounds); |
| DCHECK_EQ(panel_container_, callout_widget_window->GetParent()); |
| DCHECK_EQ(panel_container_, panel->GetParent()); |
| panel_container_->StackChildAbove(callout_widget_window, panel); |
| @@ -928,13 +928,15 @@ void PanelLayoutManager::OnKeyboardBoundsChanging( |
| // Ensure panels are not pushed above the parent boundaries, shrink any |
| // panels that violate this constraint. |
| if (delta > 0) { |
| - panel->SetBoundsDirect( |
| + SetChildBoundsDirect( |
| + panel->aura_window(), |
| gfx::Rect(panel_bounds.x(), panel_bounds.y() + delta, |
| panel_bounds.width(), panel_bounds.height() - delta)); |
| } |
| } else if (panel_state->HasRestoreBounds()) { |
| // Keyboard hidden, restore original bounds if they exist. |
| - panel->SetBoundsDirect(panel_state->GetRestoreBoundsInScreen()); |
| + SetChildBoundsDirect(panel->aura_window(), |
| + panel_state->GetRestoreBoundsInScreen()); |
| } |
| } |
| // This bounds change will have caused a change to the Shelf which does not |