Index: ui/views/widget/desktop_aura/desktop_drop_target_win.h |
=================================================================== |
--- ui/views/widget/desktop_aura/desktop_drop_target_win.h (revision 0) |
+++ ui/views/widget/desktop_aura/desktop_drop_target_win.h (revision 0) |
@@ -0,0 +1,81 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTIOP_DROP_TARGET_WIN_H_ |
+#define UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTIOP_DROP_TARGET_WIN_H_ |
+ |
+#include "base/memory/scoped_ptr.h" |
+#include "ui/base/dragdrop/drop_target.h" |
+#include "ui/aura/window_observer.h" |
+ |
+namespace aura { |
+class RootWindow; |
+namespace client { |
+class DragDropDelegate; |
+} |
+} |
+ |
+namespace ui { |
+class DropTargetEvent; |
+class OSExchangeData; |
+} |
+ |
+namespace views { |
+ |
+// DesktopDropTargetWin takes care of managing drag and drop for |
+// DesktopRootWindowHostWin. It converts Windows OLE drop messages into |
+// aura::client::DragDropDelegate calls. |
+class DesktopDropTargetWin : public ui::DropTarget, |
+ public aura::WindowObserver { |
+ public: |
+ DesktopDropTargetWin(aura::RootWindow* root_window, HWND window); |
+ virtual ~DesktopDropTargetWin(); |
+ |
+ private: |
+ // ui::DropTarget implementation: |
+ virtual DWORD OnDragEnter(IDataObject* data_object, |
+ DWORD key_state, |
+ POINT position, |
+ DWORD effect) OVERRIDE; |
+ virtual DWORD OnDragOver(IDataObject* data_object, |
+ DWORD key_state, |
+ POINT position, |
+ DWORD effect) OVERRIDE; |
+ virtual void OnDragLeave(IDataObject* data_object) OVERRIDE; |
+ virtual DWORD OnDrop(IDataObject* data_object, |
+ DWORD key_state, |
+ POINT position, |
+ DWORD effect) OVERRIDE; |
+ |
+ // aura::WindowObserver implementation: |
+ virtual void OnWindowDestroyed(aura::Window* window) OVERRIDE; |
+ |
+ // Common functionality for the ui::DropTarget methods to translate from COM |
+ // data types to Aura ones. |
+ void Translate(IDataObject* data_object, |
+ DWORD key_state, |
+ POINT cursor_position, |
+ DWORD effect, |
+ scoped_ptr<ui::OSExchangeData>* data, |
+ scoped_ptr<ui::DropTargetEvent>* event, |
+ aura::client::DragDropDelegate** delegate); |
+ |
+ void NotifyDragLeave(); |
+ |
+ // The root window associated with this drop target. |
+ aura::RootWindow* root_window_; |
+ |
+ // The Aura window that is currently under the cursor. We need to manually |
+ // keep track of this because Windows will only call our drag enter method |
+ // once when the user enters the associated HWND. But inside that HWND there |
+ // could be multiple aura windows, so we need to generate drag enter events |
+ // for them. |
+ aura::Window* target_window_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(DesktopDropTargetWin); |
+}; |
+ |
+} // namespace views |
+ |
+#endif // UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTIOP_DROP_TARGET_WIN_H_ |
Property changes on: ui\views\widget\desktop_aura\desktop_drop_target_win.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |