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

Side by Side Diff: components/exo/shell_surface.cc

Issue 2806783002: ash: Do not constrain window bounds if requested (Closed)
Patch Set: Remove dead code Created 3 years, 8 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
« no previous file with comments | « ash/wm/window_state_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <algorithm> 7 #include <algorithm>
8 8
9 #include "ash/frame/custom_frame_view_ash.h" 9 #include "ash/frame/custom_frame_view_ash.h"
10 #include "ash/public/cpp/shell_window_ids.h" 10 #include "ash/public/cpp/shell_window_ids.h"
(...skipping 1164 matching lines...) Expand 10 before | Expand all | Expand 10 after
1175 SetApplicationId(window, application_id_); 1175 SetApplicationId(window, application_id_);
1176 SetMainSurface(window, surface_); 1176 SetMainSurface(window, surface_);
1177 1177
1178 // Start tracking changes to window bounds and window state. 1178 // Start tracking changes to window bounds and window state.
1179 window->AddObserver(this); 1179 window->AddObserver(this);
1180 ash::wm::WindowState* window_state = ash::wm::GetWindowState(window); 1180 ash::wm::WindowState* window_state = ash::wm::GetWindowState(window);
1181 window_state->AddObserver(this); 1181 window_state->AddObserver(this);
1182 1182
1183 // Allow the client to request bounds that do not fill the entire work area 1183 // Allow the client to request bounds that do not fill the entire work area
1184 // when maximized, or the entire display when fullscreen. 1184 // when maximized, or the entire display when fullscreen.
1185 window_state->set_allow_set_bounds_in_maximized( 1185 window_state->set_allow_set_bounds_direct(bounds_mode_ == BoundsMode::CLIENT);
1186 bounds_mode_ == BoundsMode::CLIENT);
1187 1186
1188 // Notify client of initial state if different than normal. 1187 // Notify client of initial state if different than normal.
1189 if (window_state->GetStateType() != ash::wm::WINDOW_STATE_TYPE_NORMAL && 1188 if (window_state->GetStateType() != ash::wm::WINDOW_STATE_TYPE_NORMAL &&
1190 !state_changed_callback_.is_null()) { 1189 !state_changed_callback_.is_null()) {
1191 state_changed_callback_.Run(ash::wm::WINDOW_STATE_TYPE_NORMAL, 1190 state_changed_callback_.Run(ash::wm::WINDOW_STATE_TYPE_NORMAL,
1192 window_state->GetStateType()); 1191 window_state->GetStateType());
1193 } 1192 }
1194 1193
1195 // Disable movement if bounds are controlled by the client or fixed. 1194 // Disable movement if bounds are controlled by the client or fixed.
1196 bool movement_disabled = bounds_mode_ != BoundsMode::SHELL; 1195 bool movement_disabled = bounds_mode_ != BoundsMode::SHELL;
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
1453 1452
1454 void ShellSurface::UpdateWidgetBounds() { 1453 void ShellSurface::UpdateWidgetBounds() {
1455 DCHECK(widget_); 1454 DCHECK(widget_);
1456 1455
1457 // Return early if the shell is currently managing the bounds of the widget. 1456 // Return early if the shell is currently managing the bounds of the widget.
1458 // 1) When a window is either maximized/fullscreen/pinned, and the bounds 1457 // 1) When a window is either maximized/fullscreen/pinned, and the bounds
1459 // are not controlled by a client. 1458 // are not controlled by a client.
1460 ash::wm::WindowState* window_state = 1459 ash::wm::WindowState* window_state =
1461 ash::wm::GetWindowState(widget_->GetNativeWindow()); 1460 ash::wm::GetWindowState(widget_->GetNativeWindow());
1462 if (window_state->IsMaximizedOrFullscreenOrPinned() && 1461 if (window_state->IsMaximizedOrFullscreenOrPinned() &&
1463 !window_state->allow_set_bounds_in_maximized()) { 1462 !window_state->allow_set_bounds_direct()) {
1464 return; 1463 return;
1465 } 1464 }
1466 1465
1467 // 2) When a window is being dragged. 1466 // 2) When a window is being dragged.
1468 if (IsResizing()) 1467 if (IsResizing())
1469 return; 1468 return;
1470 1469
1471 // Return early if there is pending configure requests. 1470 // Return early if there is pending configure requests.
1472 if (!pending_configs_.empty() || scoped_configure_) 1471 if (!pending_configs_.empty() || scoped_configure_)
1473 return; 1472 return;
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
1622 1621
1623 // Put the black background layer behind the window if 1622 // Put the black background layer behind the window if
1624 // 1) the window is in immersive fullscreen, maximized or is active with 1623 // 1) the window is in immersive fullscreen, maximized or is active with
1625 // spoken feedback enabled. 1624 // spoken feedback enabled.
1626 // 2) the window can control the bounds of the window in fullscreen ( 1625 // 2) the window can control the bounds of the window in fullscreen (
1627 // thus the background can be visible). 1626 // thus the background can be visible).
1628 // 3) the window has no transform (the transformed background may 1627 // 3) the window has no transform (the transformed background may
1629 // not cover the entire background, e.g. overview mode). 1628 // not cover the entire background, e.g. overview mode).
1630 if ((widget_->IsFullscreen() || widget_->IsMaximized() || 1629 if ((widget_->IsFullscreen() || widget_->IsMaximized() ||
1631 underlay_capture_events) && 1630 underlay_capture_events) &&
1632 ash::wm::GetWindowState(window)->allow_set_bounds_in_maximized() && 1631 ash::wm::GetWindowState(window)->allow_set_bounds_direct() &&
1633 window->layer()->GetTargetTransform().IsIdentity()) { 1632 window->layer()->GetTargetTransform().IsIdentity()) {
1634 if (shadow_underlay_in_surface_) { 1633 if (shadow_underlay_in_surface_) {
1635 shadow_underlay_bounds = gfx::Rect(surface_->window()->bounds().size()); 1634 shadow_underlay_bounds = gfx::Rect(surface_->window()->bounds().size());
1636 } else { 1635 } else {
1637 gfx::Point origin; 1636 gfx::Point origin;
1638 origin -= window->bounds().origin().OffsetFromOrigin(); 1637 origin -= window->bounds().origin().OffsetFromOrigin();
1639 shadow_bounds.set_origin(origin); 1638 shadow_bounds.set_origin(origin);
1640 shadow_bounds.set_size(window->parent()->bounds().size()); 1639 shadow_bounds.set_size(window->parent()->bounds().size());
1641 } 1640 }
1642 shadow_underlay_opacity = 1.0f; 1641 shadow_underlay_opacity = 1.0f;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1698 gfx::Point ShellSurface::GetMouseLocation() const { 1697 gfx::Point ShellSurface::GetMouseLocation() const {
1699 aura::Window* const root_window = widget_->GetNativeWindow()->GetRootWindow(); 1698 aura::Window* const root_window = widget_->GetNativeWindow()->GetRootWindow();
1700 gfx::Point location = 1699 gfx::Point location =
1701 root_window->GetHost()->dispatcher()->GetLastMouseLocationInRoot(); 1700 root_window->GetHost()->dispatcher()->GetLastMouseLocationInRoot();
1702 aura::Window::ConvertPointToTarget( 1701 aura::Window::ConvertPointToTarget(
1703 root_window, widget_->GetNativeWindow()->parent(), &location); 1702 root_window, widget_->GetNativeWindow()->parent(), &location);
1704 return location; 1703 return location;
1705 } 1704 }
1706 1705
1707 } // namespace exo 1706 } // namespace exo
OLDNEW
« no previous file with comments | « ash/wm/window_state_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698