Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3281)

Unified Diff: ash/wm/overview/window_grid.cc

Issue 844763006: Change overview mode to so that docked panel windows are not grouped together. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed minor nits from patch set 4. Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..5029cd14f1e743c59257f48091fb75ef6352fb25 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_) {
oshima 2015/01/16 22:36:37 const auto*, or just const aura::Window* as it doe
bruthig 2015/01/17 17:35:06 Done. [Thanks for the tip ;) ]
+ 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,13 +316,6 @@ 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;
-
size_t removed_index = iter - window_list_.begin();
window_list_.erase(iter);
@@ -395,7 +343,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.

Powered by Google App Engine
This is Rietveld 408576698