- wxDropSource dragSource(data, this);
-
- // or also:
- wxDropSource dragSource(this);
- dragSource.SetData(data);
-\end{verbatim},
-
-\item {\bf dragging} The call to DoDragDrop() blocks until the user release the
-mouse button (unless you override \helpref{GiveFeedback}{wxdropsourcegivefeedback} function to do something
-special). When the mouse moves in a window of a wxWindows program, the
-corresponding wxDropTarget methods are called (the data can be also dragged to
-any other program under Windows or to any program supporting the same protocol
-under X Windows).
-\item {\bf drop} When the user releases the mouse over a window, wxWindows verifies
-if the wxDropTarget object associated (with \helpref{SetDropTarget}{setdroptarget}) with this window accepts the data. For
-this, \helpref{GetFormatCount}{wxdroptargetgetformatcount} and \helpref{GetFormat}{wxdroptargetgetformat} are used and if the format is
-supported (i.e. is one of returned by GetFormat()), then \helpref{OnDrop}{wxdroptargetondrop} is called. Otherwise, wxDragNone is
-returned by DoDragDrop() and nothing happens.
-\item {\bf the end} Finally, the receiver processes the data (e.g. pastes the text
-in its window). DoDragDrop() returns either wxDragCopy or wxDragMove
-depending on the state of the keys (<Ctrl>, <Shift> and <Alt>) at the moment
-of drop.
+ wxDropSource dragSource( this );
+ dragSource.SetData( my_data );
+\end{verbatim}
+
+\item {\bf Dragging:} The call to DoDragDrop() blocks until the user release the
+mouse button (unless you override \helpref{GiveFeedback}{wxdropsourcegivefeedback} function
+to do something special). When the mouse moves in a window of a program which understands the
+same drag-and-drop protocol (any program under Windows or any program supporting GTK 1.0
+DnD protocol under X Windows), the corresponding \helpref{wxDropTarget}{wxdroptarget} methods
+are called - see below.
+
+\item {\bf Processing the result:} DoDragDrop() returns an {\it effect code} which
+is one of the values of \helpref{wxDragResult}{wxdropsource} enum. Codes
+of wxDragError, wxDragNone and wxDragCancel have the obvious meaning and mean
+that there is nothing to do on the sending end (except of possibly logging the
+error in the first case). wxDragCopy means that the data has been successfully
+copied and doesn't require any specific actions neither. But wxDragMove is
+special because it means that the data must be deleted from where it was
+copied. If it doesn't make sense (dragging selected text from a read-only
+file) you should pass FALSE as parameter to DoDragDrop() in the previous step.
+\end{itemize}
+
+To be a {\it drop target}, i.e. to receive the data dropped by user you should
+follow the instructions below:
+
+\begin{itemize}\itemsep=0pt
+\item {\bf Initialization:} For a window to be drop target, it needs to have
+an associated \helpref{wxDropTarget}{wxdroptarget} object. Normally, you will
+call \helpref{wxWindow::SetDropTarget}{wxwindowsetdroptarget} during window
+creation associating you drop target with it. You must derive a class from
+wxDropTarget and override its pure virtual methods. Alternatively, you may
+derive from \helpref{wxTextDropTarget}{wxtextdroptarget} or
+\helpref{wxFileDropTarget}{wxfiledroptarget} and override their OnDropText()
+or OnDropFiles() method.
+
+\item {\bf Drop:} When the user releases the mouse over a window, wxWindows
+queries the associated wxDropTarget object if it accepts the data. For
+this, \helpref{GetFormatCount}{wxdroptargetgetformatcount} and \helpref{GetFormat}{wxdroptargetgetformat} are
+used and if the format is
+supported (i.e. is one of returned by GetFormat()),
+then \helpref{OnDrop}{wxdroptargetondrop} is called.
+Otherwise, wxDragNone is returned by DoDragDrop() and
+nothing happens.
+
+\item {\bf The end:} After processing the data, DoDragDrop() returns either
+wxDragCopy or wxDragMove depending on the state of the keys (<Ctrl>, <Shift>
+and <Alt>) at the moment of drop. There is currently no way for the drop
+target to change this return code.