OLD | NEW |
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/window_state.h" | 5 #include "ash/wm/window_state.h" |
6 | 6 |
7 #include "ash/ash_switches.h" | 7 #include "ash/ash_switches.h" |
8 #include "ash/root_window_controller.h" | 8 #include "ash/root_window_controller.h" |
9 #include "ash/screen_util.h" | 9 #include "ash/screen_util.h" |
10 #include "ash/shell_window_ids.h" | 10 #include "ash/shell_window_ids.h" |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 case ui::SHOW_STATE_DETACHED: | 74 case ui::SHOW_STATE_DETACHED: |
75 case ui::SHOW_STATE_END: | 75 case ui::SHOW_STATE_END: |
76 NOTREACHED() << "No WMEvent defined for the show state:" | 76 NOTREACHED() << "No WMEvent defined for the show state:" |
77 << requested_show_state; | 77 << requested_show_state; |
78 } | 78 } |
79 return WM_EVENT_NORMAL; | 79 return WM_EVENT_NORMAL; |
80 } | 80 } |
81 | 81 |
82 } // namespace | 82 } // namespace |
83 | 83 |
84 WindowState::WindowState(aura::Window* window) | |
85 : window_(window), | |
86 window_position_managed_(false), | |
87 bounds_changed_by_user_(false), | |
88 panel_attached_(true), | |
89 ignored_by_shelf_(false), | |
90 can_consume_system_keys_(false), | |
91 top_row_keys_are_function_keys_(false), | |
92 unminimize_to_restore_bounds_(false), | |
93 in_immersive_fullscreen_(false), | |
94 hide_shelf_when_fullscreen_(true), | |
95 minimum_visibility_(false), | |
96 can_be_dragged_(true), | |
97 ignore_property_change_(false), | |
98 current_state_(new DefaultState(ToWindowStateType(GetShowState()))) { | |
99 window_->AddObserver(this); | |
100 } | |
101 | |
102 WindowState::~WindowState() { | 84 WindowState::~WindowState() { |
103 // WindowState is registered as an owned property of |window_|, and window | 85 // WindowState is registered as an owned property of |window_|, and window |
104 // unregisters all of its observers in its d'tor before destroying its | 86 // unregisters all of its observers in its d'tor before destroying its |
105 // properties. As a result, window_->RemoveObserver() doesn't need to (and | 87 // properties. As a result, window_->RemoveObserver() doesn't need to (and |
106 // shouldn't) be called here. | 88 // shouldn't) be called here. |
107 } | 89 } |
108 | 90 |
109 bool WindowState::HasDelegate() const { | 91 bool WindowState::HasDelegate() const { |
110 return delegate_; | 92 return delegate_; |
111 } | 93 } |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
309 void WindowState::OnWindowPropertyChanged(aura::Window* window, | 291 void WindowState::OnWindowPropertyChanged(aura::Window* window, |
310 const void* key, | 292 const void* key, |
311 intptr_t old) { | 293 intptr_t old) { |
312 DCHECK_EQ(window, window_); | 294 DCHECK_EQ(window, window_); |
313 if (key == aura::client::kShowStateKey && !ignore_property_change_) { | 295 if (key == aura::client::kShowStateKey && !ignore_property_change_) { |
314 WMEvent event(WMEventTypeFromShowState(GetShowState())); | 296 WMEvent event(WMEventTypeFromShowState(GetShowState())); |
315 OnWMEvent(&event); | 297 OnWMEvent(&event); |
316 } | 298 } |
317 } | 299 } |
318 | 300 |
| 301 WindowState::WindowState(aura::Window* window) |
| 302 : window_(window), |
| 303 window_position_managed_(false), |
| 304 bounds_changed_by_user_(false), |
| 305 panel_attached_(true), |
| 306 ignored_by_shelf_(false), |
| 307 can_consume_system_keys_(false), |
| 308 top_row_keys_are_function_keys_(false), |
| 309 unminimize_to_restore_bounds_(false), |
| 310 in_immersive_fullscreen_(false), |
| 311 hide_shelf_when_fullscreen_(true), |
| 312 minimum_visibility_(false), |
| 313 can_be_dragged_(true), |
| 314 ignore_property_change_(false), |
| 315 current_state_(new DefaultState(ToWindowStateType(GetShowState()))) { |
| 316 window_->AddObserver(this); |
| 317 } |
| 318 |
| 319 ui::WindowShowState WindowState::GetShowState() const { |
| 320 return window_->GetProperty(aura::client::kShowStateKey); |
| 321 } |
| 322 |
319 void WindowState::SetBoundsInScreen( | 323 void WindowState::SetBoundsInScreen( |
320 const gfx::Rect& bounds_in_screen) { | 324 const gfx::Rect& bounds_in_screen) { |
321 gfx::Rect bounds_in_parent = | 325 gfx::Rect bounds_in_parent = |
322 ScreenUtil::ConvertRectFromScreen(window_->parent(), | 326 ScreenUtil::ConvertRectFromScreen(window_->parent(), |
323 bounds_in_screen); | 327 bounds_in_screen); |
324 window_->SetBounds(bounds_in_parent); | 328 window_->SetBounds(bounds_in_parent); |
325 } | 329 } |
326 | 330 |
327 ui::WindowShowState WindowState::GetShowState() const { | |
328 return window_->GetProperty(aura::client::kShowStateKey); | |
329 } | |
330 | |
331 void WindowState::AdjustSnappedBounds(gfx::Rect* bounds) { | 331 void WindowState::AdjustSnappedBounds(gfx::Rect* bounds) { |
332 if (is_dragged() || !IsSnapped()) | 332 if (is_dragged() || !IsSnapped()) |
333 return; | 333 return; |
334 gfx::Rect maximized_bounds = ScreenUtil::GetMaximizedWindowBoundsInParent( | 334 gfx::Rect maximized_bounds = ScreenUtil::GetMaximizedWindowBoundsInParent( |
335 window_); | 335 window_); |
336 if (GetStateType() == WINDOW_STATE_TYPE_LEFT_SNAPPED) | 336 if (GetStateType() == WINDOW_STATE_TYPE_LEFT_SNAPPED) |
337 bounds->set_x(maximized_bounds.x()); | 337 bounds->set_x(maximized_bounds.x()); |
338 else if (GetStateType() == WINDOW_STATE_TYPE_RIGHT_SNAPPED) | 338 else if (GetStateType() == WINDOW_STATE_TYPE_RIGHT_SNAPPED) |
339 bounds->set_x(maximized_bounds.right() - bounds->width()); | 339 bounds->set_x(maximized_bounds.right() - bounds->width()); |
340 bounds->set_y(maximized_bounds.y()); | 340 bounds->set_y(maximized_bounds.y()); |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
450 } | 450 } |
451 return settings; | 451 return settings; |
452 } | 452 } |
453 | 453 |
454 const WindowState* GetWindowState(const aura::Window* window) { | 454 const WindowState* GetWindowState(const aura::Window* window) { |
455 return GetWindowState(const_cast<aura::Window*>(window)); | 455 return GetWindowState(const_cast<aura::Window*>(window)); |
456 } | 456 } |
457 | 457 |
458 } // namespace wm | 458 } // namespace wm |
459 } // namespace ash | 459 } // namespace ash |
OLD | NEW |