Index: ui/aura_shell/desktop_event_filter.cc |
diff --git a/ui/aura_shell/desktop_event_filter.cc b/ui/aura_shell/desktop_event_filter.cc |
index 3d17865b069be2301f74e71ef5d8e3276089f845..4800d046e8f620404837abb338c38337af99898f 100644 |
--- a/ui/aura_shell/desktop_event_filter.cc |
+++ b/ui/aura_shell/desktop_event_filter.cc |
@@ -4,6 +4,7 @@ |
#include "ui/aura_shell/desktop_event_filter.h" |
+#include "ui/aura/client/drag_drop_client.h" |
#include "ui/aura/desktop.h" |
#include "ui/aura/event.h" |
#include "ui/aura/focus_manager.h" |
@@ -59,6 +60,28 @@ bool DesktopEventFilter::PreHandleKeyEvent(aura::Window* target, |
bool DesktopEventFilter::PreHandleMouseEvent(aura::Window* target, |
aura::MouseEvent* event) { |
+ |
+ // Give all events to the drag/drop controller is a drag/drop is in progress. |
Ben Goodger (Google)
2011/11/11 17:26:53
Move this whole section to a separate function Han
varunjain
2011/11/15 19:39:33
Done.
|
+ aura::DragDropClient* drag_drop_client = |
+ aura::Desktop::GetInstance()->drag_drop_client(); |
+ if (drag_drop_client && drag_drop_client->IsDragAndDropInProgress()) { |
+ switch (event->type()) { |
+ case ui::ET_MOUSE_DRAGGED: |
+ drag_drop_client->DragUpdate(target, *event); |
+ break; |
+ case ui::ET_MOUSE_RELEASED: |
+ drag_drop_client->Drop(target, *event); |
+ break; |
+ case ui::ET_MOUSE_EXITED: |
+ drag_drop_client->DragCancel(); |
+ break; |
+ default: |
+ NOTREACHED(); |
+ break; |
+ } |
+ return true; |
+ } |
+ |
switch (event->type()) { |
case ui::ET_MOUSE_PRESSED: |
ActivateIfNecessary(target, event); |