From c18ecb1164f8f8255b03374a15b381d14a096335 Mon Sep 17 00:00:00 2001
From: Vadim Zeitlin <vadim@wxwidgets.org>
Date: Tue, 8 Dec 1998 22:28:02 +0000
Subject: [PATCH] (very) preliminary DnD docs

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1136 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 docs/latex/wx/tdnd.tex   | 74 ++++++++++++++++++++++++++++++++++++++++
 docs/latex/wx/topics.tex |  2 +-
 2 files changed, 75 insertions(+), 1 deletion(-)
 create mode 100644 docs/latex/wx/tdnd.tex

diff --git a/docs/latex/wx/tdnd.tex b/docs/latex/wx/tdnd.tex
new file mode 100644
index 0000000000..67c9b6b7ed
--- /dev/null
+++ b/docs/latex/wx/tdnd.tex
@@ -0,0 +1,74 @@
+\section{Drag-and-drop and clipboard overview}\label{wxdndoverview}
+
+Classes: \helpref{wxDataObject}wxdataobject
+
+% \helpref{wxTextDataObject}wxtextdataobject
+% \helpref{wxDropSource}wxdropsource
+% \helpref{wxDropTarget}{wxdroptarget}
+% \helpref{wxTextDropTarget}{wxtextdroptarget}
+% \helpref{wxFileDropTarget}{wxfiledroptarget}
+
+Samples: see the dnd sample.
+
+This overview describes wxWindows support for drag and drop and clipboard
+operations. Both of these topics are discussed here because, in fact, they're
+quite related. Drag and drop and clipboard are just too ways of passing the
+data around and so the code required to implement both types of the operations
+is almost the same.
+
+In any case, you work with some data which is represented by the
+\helpref{wxDataObject}{wxdataobject} class. It is capable to contain any kind
+data in one of any of predefined formats (see enum
+\helpref{StdFormatand}{stdformat}) and is smart enough to describe the format
+of data it contains. There is also a specialization of this class which stores
+only text - the only difference between
+\helpref{wxTextDataObject}{wxtextdataobject} and wxDataObject is that the
+first one is easily constructed from wxString.
+
+Also, for both kinds of operations, there is a sender which provides data and
+a receiver who gets it. The sender is responsible for constructing the
+wxDataObject and the receiver can query it and process the data it contains
+in any way he likes.
+
+In the case of a drag and drop operation, the sender is called a {\it drop
+source} while the receiver is a {\it dtop target}. There are several steps in
+the dragging process:
+\begin{itemize}\itemsep=0pt
+\item{preparation} First of all, the data object must be created and
+initilized with the data you wish to drag. For example:
+\begin{verbatim}
+	wxTextDataObject data("This string will be dragged.");
+\end{verbatim}. Of course, the data object may contain arbitrary data of any
+type.
+\item{drag start} This happens when you call
+\helpref{DoDragDrop}{wxdropsourcedodragdrop} function. For this you must first
+construct a wxDropSource object and associate the data object from the
+previous step with it like this:
+\begin{verbatim}
+	wxDropSource dragSource(data, this);
+
+	// or also:
+	wxDropSource dragSource(this);
+	dragSource.SetData(data);
+\end{verbatim},
+\item{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{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{the end} Finally, the receiver processes the data (e.g. pastes the text
+in it's window). DoDragDrop() returns either wxDragCopy or wxDragMove
+depending on the state of the keys (<Ctrl>, <Shift> and <Alt>) at the moment
+of drop.
+\end{itemize}
+
diff --git a/docs/latex/wx/topics.tex b/docs/latex/wx/topics.tex
index a10357aaa5..c566f0cea9 100644
--- a/docs/latex/wx/topics.tex
+++ b/docs/latex/wx/topics.tex
@@ -35,5 +35,5 @@ This chapter contains a selection of topic overviews.
 \input texpr.tex
 \input tgrid.tex
 \input tstring.tex
+\input tdnd.tex
 \input tusage.tex
-
-- 
2.50.0

