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); |
varkha
2017/06/21 01:51:52
nit: true /* animate */
xdai1
2017/06/22 21:46:33
Done.
|
+} |
+ |
void WindowGrid::OnWindowDestroying(aura::Window* window) { |
window_observer_.Remove(window); |
window_state_observer_.Remove(wm::GetWindowState(window)); |