-/*!
-
- @page overview_dnd Drag and drop overview
-
- Classes: #wxDataObject, #wxTextDataObject, #wxDropSource, #wxDropTarget,
- #wxTextDropTarget, #wxFileDropTarget
-
- Note that @c wxUSE_DRAG_AND_DROP must be defined in @c setup.h in order
- to use drag and drop in wxWidgets.
-
- See also: @ref overview_dataobject and @ref samplednd_overview.
-
- It may be noted that data transfer to and from the clipboard is quite
- similar to data transfer with drag and drop and the code to implement
- these two types is almost the same. In particular, both data transfer
- mechanisms store data in some kind of #wxDataObject and identify its format(s)
- using the #wxDataFormat class.
-
- To be a @e drag source, i.e. to provide the data which may be dragged by
- the user elsewhere, you should implement the following steps:
-
- @li @b Preparation: First of all, a data object must be created and
- initialized with the data you wish to drag. For example:
-
- @code
- wxTextDataObject my_data("This text will be dragged.");
- @endcode
-
- @li <b>Drag start</b>: To start the dragging process (typically in response to a
- mouse click) you must call wxDropSource::DoDragDrop like this:
-
- @code
- wxDropSource dragSource( this );
- dragSource.SetData( my_data );
- wxDragResult result = dragSource.DoDragDrop( true );
- @endcode
-
- @li @b Dragging: The call to DoDragDrop() blocks the program until the user releases
- the mouse button (unless you override the #GiveFeedback 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
- the XDnD protocol under X Windows), the corresponding #wxDropTarget methods
- are called - see below.
-
- @li <b>Processing the result</b>: DoDragDrop() returns an @e effect code which
- is one of the values of @c wxDragResult enum (explained #here):
-
- @code
- switch (result)
- {
- case wxDragCopy:
+/**
+
+@page overview_dnd Drag and Drop Overview
+
+@tableofcontents
+
+It may be noted that data transfer to and from the clipboard is quite
+similar to data transfer with drag and drop and the code to implement
+these two types is almost the same. In particular, both data transfer
+mechanisms store data in some kind of wxDataObject and identify its format(s)
+using the wxDataFormat class.
+
+Note that @c wxUSE_DRAG_AND_DROP must be defined in @c setup.h in order
+to use drag and drop in wxWidgets.
+
+@see @ref overview_dataobject, @ref group_class_dnd, @ref page_samples_dnd
+
+
+
+@section overview_dnd_dropsource Drop Source Requirements
+
+To be a @e "drop source", i.e. to provide the data which may be dragged by
+the user elsewhere, you should implement the following steps:
+
+@li @b Preparation: First of all, a data object must be created and
+ initialized with the data you wish to drag. For example:
+ @code
+ wxTextDataObject my_data("This text will be dragged.");
+ @endcode
+@li <b>Drag start</b>: To start the dragging process (typically in response to a
+ mouse click) you must call wxDropSource::DoDragDrop like this:
+ @code
+ wxDropSource dragSource( this );
+ dragSource.SetData( my_data );
+ wxDragResult result = dragSource.DoDragDrop( true );
+ @endcode
+@li @b Dragging: The call to DoDragDrop() blocks the program until the user
+ releases the mouse button (unless you override the
+ wxDropSource::GiveFeedback 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
+ the XDnD protocol under X Windows), the corresponding wxDropTarget methods
+ are called - see below.
+@li <b>Processing the result</b>: DoDragDrop() returns an @e effect code which
+ is one of the values of @c wxDragResult enum (explained in wxDropTarget page):
+ @code
+ switch (result)
+ {
+ case wxDragCopy: