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

\overview{Overview}{wxdndoverview}

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

\wxheading{Derived from}

\helpref{wxObject}{wxobject}

\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{Drag and drop overview}{wxdndoverview}, \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{wxDropSource::SetData}{wxdropsourcesetdata} later.

{\it win} is required by wxGTK and therefore should always be set.

\func{}{wxDropSource}{\param{wxDataObject }{\&data}, \param{wxWindow }{*win = NULL}}

\wxheading{Parameters}

\docparam{data}{A reference to the \helpref{data object}{wxdataobject} associated with the drop source.}

\docparam{win}{Only used by wxGTK. TODO}

\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{data object}{wxdataobject} associated with the drop source.

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

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

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

If {\bf bAllowMove} is FALSE, data can only be copied. Under GTK, data
is always copied.

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

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

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. MSW only. }

\docparam{bScrolling}{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.

