Index: ash/wm/workspace/workspace_event_filter.cc |
diff --git a/ash/wm/workspace/workspace_event_filter.cc b/ash/wm/workspace/workspace_event_filter.cc |
index e64bc901bf94e5f0f84b089379761ea2a5b1654d..0fe8bb2b9ebee1c15813e4d0e13a4f6a10978c68 100644 |
--- a/ash/wm/workspace/workspace_event_filter.cc |
+++ b/ash/wm/workspace/workspace_event_filter.cc |
@@ -7,6 +7,7 @@ |
#include "ash/wm/window_frame.h" |
#include "ash/wm/window_util.h" |
#include "ash/wm/workspace/workspace_layout_manager.h" |
+#include "ash/wm/workspace/workspace_window_resizer.h" |
#include "ui/aura/event.h" |
#include "ui/aura/window.h" |
#include "ui/base/hit_test.h" |
@@ -31,8 +32,6 @@ namespace internal { |
WorkspaceEventFilter::WorkspaceEventFilter(aura::Window* owner) |
: ToplevelWindowEventFilter(owner), |
- owner_(owner), |
- drag_state_(DRAG_NONE), |
hovered_window_(NULL) { |
} |
@@ -43,57 +42,18 @@ WorkspaceEventFilter::~WorkspaceEventFilter() { |
bool WorkspaceEventFilter::PreHandleMouseEvent(aura::Window* target, |
aura::MouseEvent* event) { |
- WorkspaceLayoutManager* layout_manager = |
- static_cast<WorkspaceLayoutManager*>(owner_->layout_manager()); |
- DCHECK(layout_manager); |
- |
- // TODO(oshima|derat): Incorporate the logic below and introduce DragObserver |
- // (or something similar) to decouple DCLM. |
- |
- // Notify layout manager that drag event may move/resize the target wnidow. |
- if (event->type() == ui::ET_MOUSE_DRAGGED && drag_state_ == DRAG_NONE) |
- layout_manager->PrepareForMoveOrResize(target, event); |
- |
- bool handled = ToplevelWindowEventFilter::PreHandleMouseEvent(target, event); |
- |
switch (event->type()) { |
- case ui::ET_MOUSE_DRAGGED: |
- // Cancel move/resize if the event wasn't handled, or |
- // drag_state_ didn't move to MOVE or RESIZE. |
- if (handled) { |
- switch (drag_state_) { |
- case DRAG_NONE: |
- if (!UpdateDragState()) |
- layout_manager->CancelMoveOrResize(target, event); |
- break; |
- case DRAG_MOVE: |
- layout_manager->ProcessMove(target, event); |
- break; |
- case DRAG_RESIZE: |
- break; |
- } |
- } else { |
- layout_manager->CancelMoveOrResize(target, event); |
- } |
- break; |
case ui::ET_MOUSE_ENTERED: |
UpdateHoveredWindow(GetActivatableWindow(target)); |
break; |
+ case ui::ET_MOUSE_CAPTURE_CHANGED: |
case ui::ET_MOUSE_EXITED: |
UpdateHoveredWindow(NULL); |
break; |
- case ui::ET_MOUSE_RELEASED: |
- if (drag_state_ == DRAG_MOVE) |
- layout_manager->EndMove(target, event); |
- else if (drag_state_ == DRAG_RESIZE) |
- layout_manager->EndResize(target, event); |
- |
- drag_state_ = DRAG_NONE; |
- break; |
default: |
break; |
} |
- return handled; |
+ return ToplevelWindowEventFilter::PreHandleMouseEvent(target, event); |
} |
void WorkspaceEventFilter::OnWindowDestroyed(aura::Window* window) { |
@@ -102,9 +62,12 @@ void WorkspaceEventFilter::OnWindowDestroyed(aura::Window* window) { |
hovered_window_ = NULL; |
} |
-bool WorkspaceEventFilter::UpdateDragState() { |
- // TODO(sky): nuke this method. |
- return false; |
+WindowResizer* WorkspaceEventFilter::CreateWindowResizer( |
+ aura::Window* window, |
+ const gfx::Point& point, |
+ int window_component) { |
+ return |
+ new WorkspaceWindowResizer(window, point, window_component, grid_size()); |
} |
void WorkspaceEventFilter::UpdateHoveredWindow( |