| Index: ash/wm/overview/window_grid.cc
|
| diff --git a/ash/wm/overview/window_grid.cc b/ash/wm/overview/window_grid.cc
|
| index 3b27667d7821785128963dc6874bbdab19d6e966..20aabd3f28018fdaa8f1f26bbaf165196d0d487d 100644
|
| --- a/ash/wm/overview/window_grid.cc
|
| +++ b/ash/wm/overview/window_grid.cc
|
| @@ -260,14 +260,16 @@ bool IsMinimizedStateType(wm::WindowStateType type) {
|
|
|
| WindowGrid::WindowGrid(aura::Window* root_window,
|
| const std::vector<aura::Window*>& windows,
|
| - WindowSelector* window_selector)
|
| + WindowSelector* window_selector,
|
| + const gfx::Rect& bounds_in_screen)
|
| : root_window_(root_window),
|
| window_selector_(window_selector),
|
| window_observer_(this),
|
| window_state_observer_(this),
|
| selected_index_(0),
|
| num_columns_(0),
|
| - prepared_for_overview_(false) {
|
| + prepared_for_overview_(false),
|
| + bounds_(bounds_in_screen) {
|
| aura::Window::Windows windows_in_root;
|
| for (auto* window : windows) {
|
| if (window->GetRootWindow() == root_window)
|
| @@ -329,9 +331,8 @@ void WindowGrid::PositionWindows(bool animate) {
|
| aura::Window* widget_window = shield_widget_->GetNativeWindow();
|
| const gfx::Rect bounds = widget_window->parent()->bounds();
|
| widget_window->SetBounds(bounds);
|
| - gfx::Rect total_bounds = ScreenUtil::GetDisplayWorkAreaBoundsInParent(
|
| - root_window_->GetChildById(kShellWindowId_DefaultContainer));
|
| - ::wm::ConvertRectToScreen(root_window_, &total_bounds);
|
| +
|
| + gfx::Rect total_bounds = bounds_;
|
| // Windows occupy vertically centered area with additional vertical insets.
|
| int horizontal_inset =
|
| gfx::ToFlooredInt(std::min(kOverviewInsetRatio * total_bounds.width(),
|
| @@ -521,6 +522,20 @@ bool WindowGrid::Contains(const aura::Window* window) const {
|
| return false;
|
| }
|
|
|
| +void WindowGrid::RemoveItem(WindowSelectorItem* selector_item) {
|
| + auto iter =
|
| + std::find_if(window_list_.begin(), window_list_.end(),
|
| + [selector_item](std::unique_ptr<WindowSelectorItem>& item) {
|
| + return (item.get() == selector_item);
|
| + });
|
| + if (iter != window_list_.end()) {
|
| + window_observer_.Remove(selector_item->GetWindow());
|
| + window_state_observer_.Remove(
|
| + wm::GetWindowState(selector_item->GetWindow()));
|
| + window_list_.erase(iter);
|
| + }
|
| +}
|
| +
|
| void WindowGrid::FilterItems(const base::string16& pattern) {
|
| base::i18n::FixedPatternStringSearchIgnoringCaseAndAccents finder(pattern);
|
| for (const auto& window : window_list_) {
|
| @@ -547,6 +562,11 @@ void WindowGrid::WindowClosing(WindowSelectorItem* window) {
|
| selection_widget_->SetOpacity(0.f);
|
| }
|
|
|
| +void WindowGrid::SetTotalBoundsInScreen(const gfx::Rect bounds) {
|
| + bounds_ = bounds;
|
| + PositionWindows(true);
|
| +}
|
| +
|
| void WindowGrid::OnWindowDestroying(aura::Window* window) {
|
| window_observer_.Remove(window);
|
| window_state_observer_.Remove(wm::GetWindowState(window));
|
|
|