OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "components/exo/shell_surface.h" | 5 #include "components/exo/shell_surface.h" |
6 | 6 |
7 #include "ash/aura/wm_window_aura.h" | 7 #include "ash/aura/wm_window_aura.h" |
8 #include "ash/common/shell_window_ids.h" | 8 #include "ash/common/shell_window_ids.h" |
9 #include "ash/common/wm/window_resizer.h" | 9 #include "ash/common/wm/window_resizer.h" |
10 #include "ash/common/wm/window_state.h" | 10 #include "ash/common/wm/window_state.h" |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 | 229 |
230 ShellSurface::ShellSurface(Surface* surface) | 230 ShellSurface::ShellSurface(Surface* surface) |
231 : ShellSurface(surface, | 231 : ShellSurface(surface, |
232 nullptr, | 232 nullptr, |
233 gfx::Rect(), | 233 gfx::Rect(), |
234 true, | 234 true, |
235 ash::kShellWindowId_DefaultContainer) {} | 235 ash::kShellWindowId_DefaultContainer) {} |
236 | 236 |
237 ShellSurface::~ShellSurface() { | 237 ShellSurface::~ShellSurface() { |
238 DCHECK(!scoped_configure_); | 238 DCHECK(!scoped_configure_); |
239 ash::Shell::GetInstance()->activation_client()->RemoveObserver(this); | |
240 if (surface_) { | |
241 if (scale_ != 1.0) | |
242 surface_->window()->SetTransform(gfx::Transform()); | |
243 surface_->SetSurfaceDelegate(nullptr); | |
244 surface_->RemoveSurfaceObserver(this); | |
245 } | |
246 if (parent_) | |
247 parent_->RemoveObserver(this); | |
248 if (resizer_) | 239 if (resizer_) |
249 EndDrag(false /* revert */); | 240 EndDrag(false /* revert */); |
250 if (widget_) { | 241 if (widget_) { |
251 ash::wm::GetWindowState(widget_->GetNativeWindow())->RemoveObserver(this); | 242 ash::wm::GetWindowState(widget_->GetNativeWindow())->RemoveObserver(this); |
252 widget_->GetNativeWindow()->RemoveObserver(this); | 243 widget_->GetNativeWindow()->RemoveObserver(this); |
253 if (widget_->IsVisible()) | 244 if (widget_->IsVisible()) |
254 widget_->Hide(); | 245 widget_->Hide(); |
255 widget_->CloseNow(); | 246 widget_->CloseNow(); |
256 } | 247 } |
| 248 ash::Shell::GetInstance()->activation_client()->RemoveObserver(this); |
| 249 if (parent_) |
| 250 parent_->RemoveObserver(this); |
| 251 if (surface_) { |
| 252 if (scale_ != 1.0) |
| 253 surface_->window()->SetTransform(gfx::Transform()); |
| 254 surface_->SetSurfaceDelegate(nullptr); |
| 255 surface_->RemoveSurfaceObserver(this); |
| 256 } |
257 } | 257 } |
258 | 258 |
259 void ShellSurface::AcknowledgeConfigure(uint32_t serial) { | 259 void ShellSurface::AcknowledgeConfigure(uint32_t serial) { |
260 TRACE_EVENT1("exo", "ShellSurface::AcknowledgeConfigure", "serial", serial); | 260 TRACE_EVENT1("exo", "ShellSurface::AcknowledgeConfigure", "serial", serial); |
261 | 261 |
262 // Apply all configs that are older or equal to |serial|. The result is that | 262 // Apply all configs that are older or equal to |serial|. The result is that |
263 // the origin of the main surface will move and the resize direction will | 263 // the origin of the main surface will move and the resize direction will |
264 // change to reflect the acknowledgement of configure request with |serial| | 264 // change to reflect the acknowledgement of configure request with |serial| |
265 // at the next call to Commit(). | 265 // at the next call to Commit(). |
266 while (!pending_configs_.empty()) { | 266 while (!pending_configs_.empty()) { |
(...skipping 909 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1176 &shadow_bounds); | 1176 &shadow_bounds); |
1177 shadow_overlay_->SetBounds(shadow_bounds); | 1177 shadow_overlay_->SetBounds(shadow_bounds); |
1178 shadow_underlay_->SetBounds(shadow_bounds); | 1178 shadow_underlay_->SetBounds(shadow_bounds); |
1179 shadow->SetContentBounds(gfx::Rect(shadow_bounds.size())); | 1179 shadow->SetContentBounds(gfx::Rect(shadow_bounds.size())); |
1180 wm::SetShadowType(window, wm::SHADOW_TYPE_RECTANGULAR); | 1180 wm::SetShadowType(window, wm::SHADOW_TYPE_RECTANGULAR); |
1181 } | 1181 } |
1182 } | 1182 } |
1183 } | 1183 } |
1184 | 1184 |
1185 } // namespace exo | 1185 } // namespace exo |
OLD | NEW |