Chromium Code Reviews| Index: ash/wm/overview/window_grid.cc |
| diff --git a/ash/wm/overview/window_grid.cc b/ash/wm/overview/window_grid.cc |
| index defc09bea24ec489ecefdae1003f5f2156406760..cdb039d8ab525b9cca3ea1e5a513776331b07d86 100644 |
| --- a/ash/wm/overview/window_grid.cc |
| +++ b/ash/wm/overview/window_grid.cc |
| @@ -74,21 +74,7 @@ struct WindowSelectorItemComparator |
| } |
| bool operator()(WindowSelectorItem* window) const { |
| - return window->HasSelectableWindow(target); |
| - } |
| - |
| - const aura::Window* target; |
| -}; |
| - |
| -// A comparator for locating a WindowSelectorItem given a targeted window. |
| -struct WindowSelectorItemTargetComparator |
| - : public std::unary_function<WindowSelectorItem*, bool> { |
| - explicit WindowSelectorItemTargetComparator(const aura::Window* target_window) |
| - : target(target_window) { |
| - } |
| - |
| - bool operator()(WindowSelectorItem* window) const { |
| - return window->Contains(target); |
| + return window->GetWindow() == target; |
| } |
| const aura::Window* target; |
| @@ -141,10 +127,6 @@ WindowGrid::WindowGrid(aura::Window* root_window, |
| WindowSelector* window_selector) |
| : root_window_(root_window), |
| window_selector_(window_selector) { |
| - WindowSelectorItem* panels_item = nullptr; |
| - |
| - std::set<aura::Window*> panels_item_windows; |
| - aura::Window* panels_parent = nullptr; |
| for (aura::Window::Windows::const_iterator iter = windows.begin(); |
| iter != windows.end(); ++iter) { |
| @@ -153,36 +135,7 @@ WindowGrid::WindowGrid(aura::Window* root_window, |
| (*iter)->AddObserver(this); |
| observed_windows_.insert(*iter); |
| - if ((*iter)->type() == ui::wm::WINDOW_TYPE_PANEL && |
| - wm::GetWindowState(*iter)->panel_attached()) { |
| - // Attached panel windows are grouped into a single overview item per |
| - // grid. |
| - if (!panels_item) { |
| - panels_item = new WindowSelectorItem(root_window_); |
| - window_list_.push_back(panels_item); |
| - } |
| - DCHECK(panels_parent == nullptr || panels_parent == (*iter)->parent()); |
| - panels_parent = (*iter)->parent(); |
| - panels_item_windows.insert(*iter); |
| - } else { |
| - WindowSelectorItem* selector_item = new WindowSelectorItem(root_window_); |
| - window_list_.push_back(selector_item); |
| - selector_item->AddWindow(*iter); |
| - } |
| - } |
| - |
| - if (panels_item) { |
| - // Sort and add panel windows in reverse z order to the WindowSelectorItem |
| - // so that the transparent overlays are in the proper order. |
| - |
| - CHECK_GT(panels_item_windows.size(), 0u); |
| - |
| - const Windows& children = panels_parent->children(); |
| - for (Windows::const_reverse_iterator iter = children.rbegin(); |
| - iter != children.rend(); ++iter) { |
| - if (panels_item_windows.find(*iter) != panels_item_windows.end()) |
| - panels_item->AddWindow(*iter); |
| - } |
| + window_list_.push_back(new WindowSelectorItem(root_window_, *iter)); |
| } |
| } |
| @@ -247,7 +200,7 @@ void WindowGrid::PositionWindows(bool animate) { |
| window_size.height() * row + y_offset, |
| window_size.width(), |
| window_size.height()); |
| - window_list_[i]->SetBounds(root_window_, target_bounds, animate ? |
| + window_list_[i]->SetBounds(target_bounds, animate ? |
| OverviewAnimationType::OVERVIEW_ANIMATION_LAY_OUT_SELECTOR_ITEMS : |
| OverviewAnimationType::OVERVIEW_ANIMATION_NONE); |
| } |
| @@ -333,16 +286,18 @@ WindowSelectorItem* WindowGrid::SelectedWindow() const { |
| } |
| bool WindowGrid::Contains(const aura::Window* window) const { |
| - return std::find_if(window_list_.begin(), window_list_.end(), |
| - WindowSelectorItemTargetComparator(window)) != |
| - window_list_.end(); |
| + for (auto window_item : window_list_) { |
| + if (window_item->Contains(window)) |
| + return true; |
| + } |
| + return false; |
| } |
| void WindowGrid::FilterItems(const base::string16& pattern) { |
| base::i18n::FixedPatternStringSearchIgnoringCaseAndAccents finder(pattern); |
| for (ScopedVector<WindowSelectorItem>::iterator iter = window_list_.begin(); |
| iter != window_list_.end(); iter++) { |
| - if (finder.Search((*iter)->SelectionWindow()->title(), nullptr, nullptr)) { |
| + if (finder.Search((*iter)->GetWindow()->title(), nullptr, nullptr)) { |
| (*iter)->SetDimmed(false); |
| } else { |
| (*iter)->SetDimmed(true); |
| @@ -361,12 +316,7 @@ void WindowGrid::OnWindowDestroying(aura::Window* window) { |
| DCHECK(iter != window_list_.end()); |
| - (*iter)->RemoveWindow(window); |
| - |
| - // If there are still windows in this selector entry then the overview is |
| - // still active and the active selection remains the same. |
| - if (!(*iter)->empty()) |
| - return; |
| + (*iter)->OnWindowDestroyed(); |
|
jonross
2015/01/15 13:37:47
Remove this.
Instead WindowSelectorItem should ha
bruthig
2015/01/15 18:27:25
Done.
|
| size_t removed_index = iter - window_list_.begin(); |
| window_list_.erase(iter); |
| @@ -395,7 +345,7 @@ void WindowGrid::OnWindowBoundsChanged(aura::Window* window, |
| const gfx::Rect& new_bounds) { |
| ScopedVector<WindowSelectorItem>::const_iterator iter = |
| std::find_if(window_list_.begin(), window_list_.end(), |
| - WindowSelectorItemTargetComparator(window)); |
| + WindowSelectorItemComparator(window)); |
| DCHECK(iter != window_list_.end()); |
| // Immediately finish any active bounds animation. |