diff options
Diffstat (limited to 'ui/views/drag_controller.h')
-rw-r--r-- | ui/views/drag_controller.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/ui/views/drag_controller.h b/ui/views/drag_controller.h new file mode 100644 index 0000000..94946d7 --- /dev/null +++ b/ui/views/drag_controller.h @@ -0,0 +1,50 @@ +// Copyright (c) 2011 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_DRAG_CONTROLLER_H_ +#define UI_VIEWS_DRAG_CONTROLLER_H_ +#pragma once + +#include "views/views_export.h" + +namespace gfx { +class Point; +} + +namespace ui { +class OSExchangeData; +} + +namespace views { +class View; + +// DragController is responsible for writing drag data for a view, as well as +// supplying the supported drag operations. Use DragController if you don't +// want to subclass. +class VIEWS_EXPORT DragController { + public: + // Writes the data for the drag. + virtual void WriteDragDataForView(View* sender, + const gfx::Point& press_pt, + ui::OSExchangeData* data) = 0; + + // Returns the supported drag operations (see DragDropTypes for possible + // values). A drag is only started if this returns a non-zero value. + virtual int GetDragOperationsForView(View* sender, + const gfx::Point& p) = 0; + + // Returns true if a drag operation can be started. + // |press_pt| represents the coordinates where the mouse was initially + // pressed down. |p| is the current mouse coordinates. + virtual bool CanStartDragForView(View* sender, + const gfx::Point& press_pt, + const gfx::Point& p) = 0; + + protected: + virtual ~DragController() {} +}; + +} // namespace views + +#endif // UI_VIEWS_DRAG_CONTROLLER_H_ |