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

Unified Diff: ash/common/wm/workspace/workspace_window_resizer.cc

Issue 2700523004: Remove docked windows entirely in M59. (Closed)
Patch Set: oshima + mfomitchev comments Created 3 years, 10 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/common/wm/workspace/workspace_window_resizer.cc
diff --git a/ash/common/wm/workspace/workspace_window_resizer.cc b/ash/common/wm/workspace/workspace_window_resizer.cc
index bee0bb465bbc43dc61e7894ec244b06f7b367fbd..1f42dd64304ed2b06db3937ee9826c939afec58c 100644
--- a/ash/common/wm/workspace/workspace_window_resizer.cc
+++ b/ash/common/wm/workspace/workspace_window_resizer.cc
@@ -9,11 +9,8 @@
#include <utility>
#include <vector>
-#include "ash/common/ash_switches.h"
#include "ash/common/metrics/user_metrics_action.h"
#include "ash/common/wm/default_window_resizer.h"
-#include "ash/common/wm/dock/docked_window_layout_manager.h"
-#include "ash/common/wm/dock/docked_window_resizer.h"
#include "ash/common/wm/panels/panel_window_resizer.h"
#include "ash/common/wm/window_positioning_utils.h"
#include "ash/common/wm/window_state.h"
@@ -67,7 +64,7 @@ std::unique_ptr<WindowResizer> CreateWindowResizer(
// It may be possible to refactor and eliminate chaining.
std::unique_ptr<WindowResizer> window_resizer;
- if (!window_state->IsNormalOrSnapped() && !window_state->IsDocked())
+ if (!window_state->IsNormalOrSnapped())
return std::unique_ptr<WindowResizer>();
int bounds_change =
@@ -80,7 +77,6 @@ std::unique_ptr<WindowResizer> CreateWindowResizer(
window->GetParent() ? window->GetParent()->GetShellWindowId() : -1;
if (window->GetParent() &&
(parent_shell_window_id == kShellWindowId_DefaultContainer ||
- parent_shell_window_id == kShellWindowId_DockedContainer ||
parent_shell_window_id == kShellWindowId_PanelContainer)) {
window_resizer.reset(
WorkspaceWindowResizer::Create(window_state, std::vector<WmWindow*>()));
@@ -89,15 +85,9 @@ std::unique_ptr<WindowResizer> CreateWindowResizer(
}
window_resizer = window->GetShell()->CreateDragWindowResizer(
std::move(window_resizer), window_state);
- if (window->GetType() == ui::wm::WINDOW_TYPE_PANEL)
+ if (window->GetType() == ui::wm::WINDOW_TYPE_PANEL) {
window_resizer.reset(
PanelWindowResizer::Create(window_resizer.release(), window_state));
- if (window_resizer && window->GetParent() && !window->GetTransientParent() &&
- (parent_shell_window_id == kShellWindowId_DefaultContainer ||
- parent_shell_window_id == kShellWindowId_DockedContainer ||
- parent_shell_window_id == kShellWindowId_PanelContainer)) {
- window_resizer.reset(
- DockedWindowResizer::Create(window_resizer.release(), window_state));
}
return window_resizer;
}
@@ -389,7 +379,6 @@ void WorkspaceWindowResizer::Drag(const gfx::Point& location_in_parent,
snap_type_ = SNAP_NONE;
snap_phantom_window_controller_.reset();
edge_cycler_.reset();
- SetDraggedWindowDocked(false);
}
}
@@ -415,18 +404,15 @@ void WorkspaceWindowResizer::CompleteDrag() {
details().restore_bounds.IsEmpty() ? initial_bounds
: details().restore_bounds);
}
- if (!dock_layout_->is_dragged_window_docked()) {
- // TODO(oshima): Add event source type to WMEvent and move
- // metrics recording inside WindowState::OnWMEvent.
- const wm::WMEvent event(snap_type_ == SNAP_LEFT
- ? wm::WM_EVENT_SNAP_LEFT
- : wm::WM_EVENT_SNAP_RIGHT);
- window_state()->OnWMEvent(&event);
- shell_->RecordUserMetricsAction(snap_type_ == SNAP_LEFT
- ? UMA_DRAG_MAXIMIZE_LEFT
- : UMA_DRAG_MAXIMIZE_RIGHT);
- snapped = true;
- }
+ // TODO(oshima): Add event source type to WMEvent and move
+ // metrics recording inside WindowState::OnWMEvent.
+ const wm::WMEvent event(snap_type_ == SNAP_LEFT ? wm::WM_EVENT_SNAP_LEFT
+ : wm::WM_EVENT_SNAP_RIGHT);
+ window_state()->OnWMEvent(&event);
+ shell_->RecordUserMetricsAction(snap_type_ == SNAP_LEFT
+ ? UMA_DRAG_MAXIMIZE_LEFT
+ : UMA_DRAG_MAXIMIZE_RIGHT);
+ snapped = true;
}
if (!snapped) {
@@ -444,7 +430,7 @@ void WorkspaceWindowResizer::CompleteDrag() {
window_state()->SaveCurrentBoundsForRestore();
window_state()->Restore();
}
- } else if (!dock_layout_->is_dragged_window_docked()) {
+ } else {
// The window was not snapped and is not snapped. This is a user
// resize/drag and so the current bounds should be maintained, clearing
// any prior restore bounds. When the window is docked the restore bound
@@ -510,8 +496,6 @@ WorkspaceWindowResizer::WorkspaceWindowResizer(
did_lock_cursor_ = true;
}
- dock_layout_ = DockedWindowLayoutManager::Get(GetTarget());
-
// Only support attaching to the right/bottom.
DCHECK(attached_windows_.empty() || (details().window_component == HTRIGHT ||
details().window_component == HTBOTTOM));
@@ -875,28 +859,13 @@ void WorkspaceWindowResizer::UpdateSnapPhantomWindow(const gfx::Point& location,
if (snap_type_ == SNAP_NONE || snap_type_ != last_type) {
snap_phantom_window_controller_.reset();
edge_cycler_.reset();
- if (snap_type_ == SNAP_NONE) {
- SetDraggedWindowDocked(false);
+ if (snap_type_ == SNAP_NONE)
return;
- }
}
DCHECK(snap_type_ == SNAP_LEFT || snap_type_ == SNAP_RIGHT);
- DockedAlignment desired_alignment = (snap_type_ == SNAP_LEFT)
- ? DOCKED_ALIGNMENT_LEFT
- : DOCKED_ALIGNMENT_RIGHT;
- const bool can_dock =
- ash::switches::DockedWindowsEnabled() &&
- dock_layout_->CanDockWindow(GetTarget(), desired_alignment) &&
- dock_layout_->GetAlignmentOfWindow(GetTarget()) != DOCKED_ALIGNMENT_NONE;
- if (!can_dock) {
- // If the window cannot be docked, undock the window. This may change the
- // workspace bounds and hence |snap_type_|.
- SetDraggedWindowDocked(false);
- snap_type_ = GetSnapType(location);
- }
const bool can_snap = snap_type_ != SNAP_NONE && window_state()->CanSnap();
- if (!can_snap && !can_dock) {
+ if (!can_snap) {
snap_type_ = SNAP_NONE;
snap_phantom_window_controller_.reset();
edge_cycler_.reset();
@@ -914,23 +883,10 @@ void WorkspaceWindowResizer::UpdateSnapPhantomWindow(const gfx::Point& location,
// Update phantom window with snapped or docked guide bounds.
// Windows that cannot be snapped or are less wide than kMaxDockWidth can get
// docked without going through a snapping sequence.
- gfx::Rect phantom_bounds;
- const bool should_dock =
- can_dock && (!can_snap ||
- GetTarget()->GetBounds().width() <=
- DockedWindowLayoutManager::kMaxDockWidth ||
- edge_cycler_->use_second_mode() ||
- dock_layout_->is_dragged_window_docked());
- if (should_dock) {
- SetDraggedWindowDocked(true);
- phantom_bounds = GetTarget()->GetParent()->ConvertRectFromScreen(
- dock_layout_->dragged_bounds());
- } else {
- phantom_bounds =
- (snap_type_ == SNAP_LEFT)
- ? wm::GetDefaultLeftSnappedWindowBoundsInParent(GetTarget())
- : wm::GetDefaultRightSnappedWindowBoundsInParent(GetTarget());
- }
+ gfx::Rect phantom_bounds =
varkha 2017/02/28 00:59:02 Can be const.
afakhry 2017/03/09 22:28:27 Done.
+ (snap_type_ == SNAP_LEFT)
+ ? wm::GetDefaultLeftSnappedWindowBoundsInParent(GetTarget())
+ : wm::GetDefaultRightSnappedWindowBoundsInParent(GetTarget());
if (!snap_phantom_window_controller_) {
snap_phantom_window_controller_.reset(
@@ -993,20 +949,6 @@ WorkspaceWindowResizer::SnapType WorkspaceWindowResizer::GetSnapType(
return SNAP_NONE;
}
-void WorkspaceWindowResizer::SetDraggedWindowDocked(bool should_dock) {
- if (should_dock) {
- if (!dock_layout_->is_dragged_window_docked()) {
- window_state()->set_bounds_changed_by_user(false);
- dock_layout_->DockDraggedWindow(GetTarget());
- }
- } else {
- if (dock_layout_->is_dragged_window_docked()) {
- dock_layout_->UndockDraggedWindow();
- window_state()->set_bounds_changed_by_user(true);
- }
- }
-}
-
bool WorkspaceWindowResizer::AreBoundsValidSnappedBounds(
wm::WindowStateType snapped_type,
const gfx::Rect& bounds_in_parent) const {

Powered by Google App Engine
This is Rietveld 408576698