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

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

Issue 11280283: Extract the code of showing a dragging window on another display from PhantomWindowController. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: assign NULL after deleting Layer Created 8 years 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/wm/workspace/workspace_window_resizer.h ('k') | ash/wm/workspace/workspace_window_resizer_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/wm/workspace/workspace_window_resizer.cc
diff --git a/ash/wm/workspace/workspace_window_resizer.cc b/ash/wm/workspace/workspace_window_resizer.cc
index b452a12afe26596ba11a49180aef571b5d7379e7..1229c23b861c2240d0abe893d6ce19b2be8d8bfc 100644
--- a/ash/wm/workspace/workspace_window_resizer.cc
+++ b/ash/wm/workspace/workspace_window_resizer.cc
@@ -17,6 +17,7 @@
#include "ash/wm/coordinate_conversion.h"
#include "ash/wm/cursor_manager.h"
#include "ash/wm/default_window_resizer.h"
+#include "ash/wm/drag_window_controller.h"
#include "ash/wm/property_util.h"
#include "ash/wm/window_util.h"
#include "ash/wm/workspace/phantom_window_controller.h"
@@ -29,7 +30,6 @@
#include "ui/compositor/layer.h"
#include "ui/gfx/screen.h"
#include "ui/gfx/transform.h"
-#include "ui/views/corewm/window_util.h"
namespace ash {
@@ -312,14 +312,6 @@ WorkspaceWindowResizer::~WorkspaceWindowResizer() {
shell->mouse_cursor_filter()->HideSharedEdgeIndicator();
shell->cursor_manager()->UnlockCursor();
- // Delete phantom controllers first so that they will never see the deleted
- // |layer_|.
- snap_phantom_window_controller_.reset();
- drag_phantom_window_controller_.reset();
-
- if (layer_)
- views::corewm::DeepDeleteLayers(layer_);
-
if (destroyed_)
*destroyed_ = true;
}
@@ -380,16 +372,16 @@ void WorkspaceWindowResizer::Drag(const gfx::Point& location_in_parent,
}
// Show a phantom window for dragging in another root window.
if (HasSecondaryRootWindow())
- UpdateDragPhantomWindow(bounds, in_original_root);
+ UpdateDragWindow(bounds, in_original_root);
else
- drag_phantom_window_controller_.reset();
+ drag_window_controller_.reset();
}
void WorkspaceWindowResizer::CompleteDrag(int event_flags) {
wm::SetUserHasChangedWindowPositionOrSize(details_.window, true);
window()->layer()->SetOpacity(details_.initial_opacity);
- drag_phantom_window_controller_.reset();
+ drag_window_controller_.reset();
snap_phantom_window_controller_.reset();
if (!did_move_or_resize_ || details_.window_component != HTCAPTION)
return;
@@ -431,7 +423,7 @@ void WorkspaceWindowResizer::CompleteDrag(int event_flags) {
void WorkspaceWindowResizer::RevertDrag() {
window()->layer()->SetOpacity(details_.initial_opacity);
- drag_phantom_window_controller_.reset();
+ drag_window_controller_.reset();
snap_phantom_window_controller_.reset();
Shell::GetInstance()->mouse_cursor_filter()->HideSharedEdgeIndicator();
@@ -477,7 +469,6 @@ WorkspaceWindowResizer::WorkspaceWindowResizer(
total_initial_size_(0),
snap_type_(SNAP_NONE),
num_mouse_moves_since_bounds_change_(0),
- layer_(NULL),
destroyed_(NULL),
magnetism_window_(NULL) {
DCHECK(details_.is_resizable);
@@ -827,8 +818,8 @@ int WorkspaceWindowResizer::PrimaryAxisCoordinate(int x, int y) const {
return 0;
}
-void WorkspaceWindowResizer::UpdateDragPhantomWindow(const gfx::Rect& bounds,
- bool in_original_root) {
+void WorkspaceWindowResizer::UpdateDragWindow(const gfx::Rect& bounds,
+ bool in_original_root) {
if (!did_move_or_resize_ || details_.window_component != HTCAPTION ||
!ShouldAllowMouseWarp()) {
return;
@@ -852,26 +843,22 @@ void WorkspaceWindowResizer::UpdateDragPhantomWindow(const gfx::Rect& bounds,
in_original_root ? 1 : (kMaxOpacity * (1 - fraction_in_another_window));
if (fraction_in_another_window > 0) {
- if (!drag_phantom_window_controller_.get()) {
- drag_phantom_window_controller_.reset(
- new PhantomWindowController(window()));
- drag_phantom_window_controller_->set_style(
- PhantomWindowController::STYLE_DRAGGING);
+ if (!drag_window_controller_.get()) {
+ drag_window_controller_.reset(
+ new DragWindowController(window()));
// Always show the drag phantom on the |another_root| window.
- drag_phantom_window_controller_->SetDestinationDisplay(
+ drag_window_controller_->SetDestinationDisplay(
Shell::GetScreen()->GetDisplayMatching(
another_root->GetBoundsInScreen()));
- if (!layer_)
- RecreateWindowLayers();
- drag_phantom_window_controller_->Show(bounds_in_screen, layer_);
+ drag_window_controller_->Show();
} else {
// No animation.
- drag_phantom_window_controller_->SetBounds(bounds_in_screen);
+ drag_window_controller_->SetBounds(bounds_in_screen);
}
- drag_phantom_window_controller_->SetOpacity(phantom_opacity);
+ drag_window_controller_->SetOpacity(phantom_opacity);
window()->layer()->SetOpacity(window_opacity);
} else {
- drag_phantom_window_controller_.reset();
+ drag_window_controller_.reset();
window()->layer()->SetOpacity(1.0f);
}
}
@@ -907,7 +894,7 @@ void WorkspaceWindowResizer::UpdateSnapPhantomWindow(const gfx::Point& location,
new PhantomWindowController(window()));
}
snap_phantom_window_controller_->Show(ScreenAsh::ConvertRectToScreen(
- window()->parent(), snap_sizer_->target_bounds()), NULL);
+ window()->parent(), snap_sizer_->target_bounds()));
}
void WorkspaceWindowResizer::RestackWindows() {
@@ -959,18 +946,5 @@ bool WorkspaceWindowResizer::ShouldAllowMouseWarp() const {
(window()->type() == aura::client::WINDOW_TYPE_NORMAL);
}
-void WorkspaceWindowResizer::RecreateWindowLayers() {
- DCHECK(!layer_);
- layer_ = views::corewm::RecreateWindowLayers(window(), true);
- layer_->set_delegate(window()->layer()->delegate());
- // Place the layer at (0, 0) of the PhantomWindowController's window.
- gfx::Rect layer_bounds = layer_->bounds();
- layer_bounds.set_origin(gfx::Point(0, 0));
- layer_->SetBounds(layer_bounds);
- layer_->SetVisible(false);
- // Detach it from the current container.
- layer_->parent()->Remove(layer_);
-}
-
} // namespace internal
} // namespace ash
« no previous file with comments | « ash/wm/workspace/workspace_window_resizer.h ('k') | ash/wm/workspace/workspace_window_resizer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698