summaryrefslogtreecommitdiffstats
path: root/app/win/drag_source.h
diff options
context:
space:
mode:
authorbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-17 20:44:38 +0000
committerbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-17 20:44:38 +0000
commit79a4c1e532a74ac74d72f883e52e30019fe9e731 (patch)
tree2fc9915dc6e1fe9c4b9bea3bdda5ef211da49980 /app/win/drag_source.h
parent13147160ae28933269024ba973f0a1ae3d11a57d (diff)
downloadchromium_src-79a4c1e532a74ac74d72f883e52e30019fe9e731.zip
chromium_src-79a4c1e532a74ac74d72f883e52e30019fe9e731.tar.gz
chromium_src-79a4c1e532a74ac74d72f883e52e30019fe9e731.tar.bz2
Move BaseDropTarget and BaseDragSource from base to app/win. Remove the "Base" class name prefix and put in the app::win namespace.
TEST=none BUG=none Review URL: http://codereview.chromium.org/3822007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62900 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'app/win/drag_source.h')
-rw-r--r--app/win/drag_source.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/app/win/drag_source.h b/app/win/drag_source.h
new file mode 100644
index 0000000..75bee86
--- /dev/null
+++ b/app/win/drag_source.h
@@ -0,0 +1,58 @@
+// Copyright (c) 2010 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 APP_WIN_DRAG_SOURCE_H_
+#define APP_WIN_DRAG_SOURCE_H_
+#pragma once
+
+#include <objidl.h>
+
+#include "base/basictypes.h"
+#include "base/ref_counted.h"
+
+namespace app {
+namespace win {
+
+// A base IDropSource implementation. Handles notifications sent by an active
+// drag-drop operation as the user mouses over other drop targets on their
+// system. This object tells Windows whether or not the drag should continue,
+// and supplies the appropriate cursors.
+class DragSource : public IDropSource,
+ public base::RefCountedThreadSafe<DragSource> {
+ public:
+ DragSource();
+ virtual ~DragSource() {}
+
+ // Stop the drag operation at the next chance we get. This doesn't
+ // synchronously stop the drag (since Windows is controlling that),
+ // but lets us tell Windows to cancel the drag the next chance we get.
+ void CancelDrag() {
+ cancel_drag_ = true;
+ }
+
+ // IDropSource implementation:
+ HRESULT __stdcall QueryContinueDrag(BOOL escape_pressed, DWORD key_state);
+ HRESULT __stdcall GiveFeedback(DWORD effect);
+
+ // IUnknown implementation:
+ HRESULT __stdcall QueryInterface(const IID& iid, void** object);
+ ULONG __stdcall AddRef();
+ ULONG __stdcall Release();
+
+ protected:
+ virtual void OnDragSourceCancel() {}
+ virtual void OnDragSourceDrop() {}
+ virtual void OnDragSourceMove() {}
+
+ private:
+ // Set to true if we want to cancel the drag operation.
+ bool cancel_drag_;
+
+ DISALLOW_COPY_AND_ASSIGN(DragSource);
+};
+
+} // namespace win
+} // namespace app
+
+#endif // APP_WIN_DRAG_SOURCE_H_