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

Side by Side Diff: ash/wm/overview/window_selector_panels.cc

Issue 331643004: Update the window labels if they change in overview mode. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed nits. Created 6 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ash/wm/overview/window_selector_panels.h" 5 #include "ash/wm/overview/window_selector_panels.h"
6 6
7 #include "ash/screen_util.h" 7 #include "ash/screen_util.h"
8 #include "ash/shell.h" 8 #include "ash/shell.h"
9 #include "ash/shell_window_ids.h" 9 #include "ash/shell_window_ids.h"
10 #include "ash/wm/overview/scoped_transform_overview_window.h" 10 #include "ash/wm/overview/scoped_transform_overview_window.h"
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 : panels_root_window_(panels_root_window) { 85 : panels_root_window_(panels_root_window) {
86 static_cast<PanelLayoutManager*>( 86 static_cast<PanelLayoutManager*>(
87 Shell::GetContainer(panels_root_window_, kShellWindowId_PanelContainer)-> 87 Shell::GetContainer(panels_root_window_, kShellWindowId_PanelContainer)->
88 layout_manager())->SetShowCalloutWidgets(false); 88 layout_manager())->SetShowCalloutWidgets(false);
89 } 89 }
90 90
91 WindowSelectorPanels::~WindowSelectorPanels() { 91 WindowSelectorPanels::~WindowSelectorPanels() {
92 static_cast<PanelLayoutManager*>( 92 static_cast<PanelLayoutManager*>(
93 Shell::GetContainer(panels_root_window_, kShellWindowId_PanelContainer)-> 93 Shell::GetContainer(panels_root_window_, kShellWindowId_PanelContainer)->
94 layout_manager())->SetShowCalloutWidgets(true); 94 layout_manager())->SetShowCalloutWidgets(true);
95 if (!transform_windows_.empty())
96 transform_windows_[0]->window()->RemoveObserver(this);
flackr 2014/06/24 17:10:51 nit: For consistency use transform_windows_.front(
Nina 2014/06/24 18:36:28 Done.
95 } 97 }
96 98
97 void WindowSelectorPanels::AddWindow(aura::Window* window) { 99 void WindowSelectorPanels::AddWindow(aura::Window* window) {
98 DCHECK(window->GetRootWindow() == panels_root_window_); 100 DCHECK(window->GetRootWindow() == panels_root_window_);
101 // If this is the panel we use to get the label text, observe it for changes.
102 if (transform_windows_.empty())
103 window->AddObserver(this);
99 transform_windows_.push_back(new ScopedTransformPanelWindow(window)); 104 transform_windows_.push_back(new ScopedTransformPanelWindow(window));
100 } 105 }
101 106
102 aura::Window* WindowSelectorPanels::GetRootWindow() { 107 aura::Window* WindowSelectorPanels::GetRootWindow() {
103 return transform_windows_.front()->window()->GetRootWindow(); 108 return transform_windows_.front()->window()->GetRootWindow();
104 } 109 }
105 110
106 bool WindowSelectorPanels::HasSelectableWindow(const aura::Window* window) { 111 bool WindowSelectorPanels::HasSelectableWindow(const aura::Window* window) {
107 for (WindowList::const_iterator iter = transform_windows_.begin(); 112 for (WindowList::const_iterator iter = transform_windows_.begin();
108 iter != transform_windows_.end(); ++iter) { 113 iter != transform_windows_.end(); ++iter) {
(...skipping 23 matching lines...) Expand all
132 } 137 }
133 138
134 aura::Window* WindowSelectorPanels::SelectionWindow() { 139 aura::Window* WindowSelectorPanels::SelectionWindow() {
135 return transform_windows_.front()->window(); 140 return transform_windows_.front()->window();
136 } 141 }
137 142
138 void WindowSelectorPanels::RemoveWindow(const aura::Window* window) { 143 void WindowSelectorPanels::RemoveWindow(const aura::Window* window) {
139 for (WindowList::iterator iter = transform_windows_.begin(); 144 for (WindowList::iterator iter = transform_windows_.begin();
140 iter != transform_windows_.end(); ++iter) { 145 iter != transform_windows_.end(); ++iter) {
141 if ((*iter)->window() == window) { 146 if ((*iter)->window() == window) {
147 // If this is the first window, we are observing it for label changes,
148 // stop doing so before it is destructed.
flackr 2014/06/24 17:10:51 I would also be fine with observing all of the win
Nina 2014/06/24 18:36:28 Changed the code to observe all of the transform w
149 if (window == transform_windows_[0]->window()) {
150 transform_windows_[0]->window()->RemoveObserver(this);
151 // If we still have windows after deletion, observe the next one.
152 if (transform_windows_.size() > 1)
153 transform_windows_[1]->window()->AddObserver(this);
154 }
142 (*iter)->OnWindowDestroyed(); 155 (*iter)->OnWindowDestroyed();
143 transform_windows_.erase(iter); 156 transform_windows_.erase(iter);
144 break; 157 break;
145 } 158 }
146 } 159 }
147 WindowSelectorItem::RemoveWindow(window); 160 WindowSelectorItem::RemoveWindow(window);
148 } 161 }
149 162
150 bool WindowSelectorPanels::empty() const { 163 bool WindowSelectorPanels::empty() const {
151 return transform_windows_.empty(); 164 return transform_windows_.empty();
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 transform.Translate(bounding_rect.x() - bounds.x(), 206 transform.Translate(bounding_rect.x() - bounds.x(),
194 bounding_rect.y() - bounds.y()); 207 bounding_rect.y() - bounds.y());
195 transform.PreconcatTransform(bounding_transform); 208 transform.PreconcatTransform(bounding_transform);
196 transform.Translate(bounds.x() - bounding_rect.x(), 209 transform.Translate(bounds.x() - bounding_rect.x(),
197 bounds.y() - bounding_rect.y()); 210 bounds.y() - bounding_rect.y());
198 (*iter)->SetTransform(root_window, transform, animate); 211 (*iter)->SetTransform(root_window, transform, animate);
199 } 212 }
200 } 213 }
201 214
202 } // namespace ash 215 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698