\section{\class{wxDropSource}}\label{wxdropsource}

This class represents a source for a drag and drop operation.

See \helpref{Drag'n'Drop overview}{wxdndoverview} and \helpref{wxDataObject overview}{wxdataobjectoverview}
for more information.

\wxheading{Derived from}

None

\wxheading{Include files}

<wx/dnd.h>

\wxheading{Types}

\index{wxDragResult}wxDragResult is defined as follows:

{\small\begin{verbatim}
enum wxDragResult
{
    wxDragError,    // error prevented the d&d operation from completing
    wxDragNone,     // drag target didn't accept the data
    wxDragCopy,     // the data was successfully copied
    wxDragMove,     // the data was successfully moved
    wxDragCancel    // the operation was cancelled by user (not an error)
};
\end{verbatim}
}

\wxheading{See also}

\helpref{wxDropTarget}{wxdroptarget}, 
\helpref{wxTextDropTarget}{wxtextdroptarget}, \helpref{wxFileDropTarget}{wxfiledroptarget}

\latexignore{\rtfignore{\wxheading{Members}}}

\membersection{wxDropSource::wxDropSource}\label{wxdropsourcewxdropsource}

\func{}{wxDropSource}{\param{wxWindow*}{ win = NULL}}

Default/wxGTK-specific constructor. If you use the default constructor you must
call \helpref{SetData}{wxdropsourcesetdata} later.

Note that {\it win} is required by the GTK port and therefore should always be set.

\membersection{wxDropSource::\destruct{wxDropSource}}\label{wxdropsourcedtor}

\func{virtual }{\destruct{wxDropSource}}{\void}

\membersection{wxDropSource::SetData}\label{wxdropsourcesetdata}

\func{void}{SetData}{\param{wxDataObject\&}{ data}}

Sets the data \helpref{wxDataObject}{wxdataobject} associated with the 
drop source. This will not delete any previously associated data.

\membersection{wxDropSource::DoDragDrop}\label{wxdropsourcedodragdrop}

\func{virtual wxDragResult}{DoDragDrop}{\param{bool }{allowMove = FALSE}}

Do it (call this in response to a mouse button press, for example).

If {\bf allowMove} is FALSE, data can only be copied.

\membersection{wxDropSource::GiveFeedback}\label{wxdropsourcegivefeedback}

\func{virtual bool}{GiveFeedback}{\param{wxDragResult }{effect}, \param{bool }{scrolling}}

Overridable: you may give some custom UI feedback during the drag and drop operation
in this function. It is called on each mouse move, so your implementation must not be too
slow.

\wxheading{Parameters}

\docparam{effect}{The effect to implement. One of wxDragCopy, wxDragMove and wxDragNone. }

\docparam{scrolling}{TRUE if the window is scrolling. MSW only. }

\wxheading{Return value}

Return FALSE if you want default feedback, or TRUE if you implement your own
feedback. The return values is ignored under GTK.

