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

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

Issue 2700523004: Remove docked windows entirely in M59. (Closed)
Patch Set: Rebase Created 3 years, 9 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
« no previous file with comments | « ash/common/wm/workspace/workspace_window_resizer.h ('k') | ash/common/wm/workspace_controller.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 5f66ec57fd572e0d84222001b04f1f4081818698..e2b0a34d150762fa248b21992adabbc1753928a0 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"
@@ -59,15 +56,13 @@ std::unique_ptr<WindowResizer> CreateWindowResizer(
// classes using reparenting during drag operations it becomes challenging to
// implement proper transition from one resizer to another during or at the
// end of the drag. This also causes http://crbug.com/247085.
- // It seems the only thing the panel or dock resizer needs to do is notify the
- // layout manager when a docked window is being dragged. We should have a
- // better way of doing this, perhaps by having a way of observing drags or
- // having a generic drag window wrapper which informs a layout manager that a
- // drag has started or stopped.
- // It may be possible to refactor and eliminate chaining.
+ // We should have a better way of doing this, perhaps by having a way of
+ // observing drags or having a generic drag window wrapper which informs a
+ // layout manager that a drag has started or stopped. 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 +75,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 +83,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;
}
@@ -388,7 +376,6 @@ void WorkspaceWindowResizer::Drag(const gfx::Point& location_in_parent,
snap_type_ = SNAP_NONE;
snap_phantom_window_controller_.reset();
edge_cycler_.reset();
- SetDraggedWindowDocked(false);
}
}
@@ -414,18 +401,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) {
@@ -443,11 +427,10 @@ 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
- // must be kept so the docked state can be reverted properly.
+ // any prior restore bounds.
window_state()->ClearRestoreBounds();
}
}
@@ -509,8 +492,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));
@@ -874,28 +855,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();
@@ -910,26 +876,11 @@ void WorkspaceWindowResizer::UpdateSnapPhantomWindow(const gfx::Point& location,
edge_cycler_->OnMove(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());
- }
+ // Update phantom window with snapped guide bounds.
+ const gfx::Rect phantom_bounds =
+ (snap_type_ == SNAP_LEFT)
+ ? wm::GetDefaultLeftSnappedWindowBoundsInParent(GetTarget())
+ : wm::GetDefaultRightSnappedWindowBoundsInParent(GetTarget());
if (!snap_phantom_window_controller_) {
snap_phantom_window_controller_.reset(
@@ -992,20 +943,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 {
« no previous file with comments | « ash/common/wm/workspace/workspace_window_resizer.h ('k') | ash/common/wm/workspace_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698