|
|
|
@@ -20,7 +20,7 @@ and identify its format(s) using the \helpref{wxDataFormat}{wxdataformat}
|
|
|
|
|
class.
|
|
|
|
|
|
|
|
|
|
To be a {\it drag source}, i.e. to provide the data which may be dragged by
|
|
|
|
|
user elsewhere, you should implement the following steps:
|
|
|
|
|
the user elsewhere, you should implement the following steps:
|
|
|
|
|
|
|
|
|
|
\begin{itemize}\itemsep=0pt
|
|
|
|
|
\item {\bf Preparation:} First of all, a data object must be created and
|
|
|
|
@@ -29,17 +29,17 @@ initialized with the data you wish to drag. For example:
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
wxTextDataObject my_data("This text will be dragged.");
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\item{\bf Drag start:} To start dragging process (typically in response to a
|
|
|
|
|
\item{\bf Drag start:} To start the dragging process (typically in response to a
|
|
|
|
|
mouse click) you must call \helpref{wxDropSource::DoDragDrop}{wxdropsourcedodragdrop}
|
|
|
|
|
like this:
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
wxDropSource dragSource( this );
|
|
|
|
|
dragSource.SetData( my_data );
|
|
|
|
|
wxDragResult result = dragSource.DoDragDrop( true );
|
|
|
|
|
wxDragResult result = dragSource.DoDragDrop( TRUE );
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\item {\bf Dragging:} The call to DoDragDrop() blocks the program until the user release the
|
|
|
|
|
mouse button (unless you override \helpref{GiveFeedback}{wxdropsourcegivefeedback} function
|
|
|
|
|
\item {\bf Dragging:} The call to DoDragDrop() blocks the program until the user releases the
|
|
|
|
|
mouse button (unless you override the \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 the
|
|
|
|
|
XDnD protocol under X Windows), the corresponding \helpref{wxDropTarget}{wxdroptarget} methods
|
|
|
|
@@ -57,28 +57,28 @@ is one of the values of {\tt wxDragResult} enum (explained \helpref{here}{wxdrop
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{itemize}
|
|
|
|
|
|
|
|
|
|
To be a {\it drop target}, i.e. to receive the data dropped by user you should
|
|
|
|
|
To be a {\it drop target}, i.e. to receive the data dropped by the 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
|
|
|
|
|
\item {\bf Initialization:} For a window to be a 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
|
|
|
|
|
creation associating your 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,
|
|
|
|
|
asks the associated wxDropTarget object if it accepts the data. For this,
|
|
|
|
|
a \helpref{wxDataObject}{wxdataobject} must be associated with the drop target
|
|
|
|
|
and this data object will be responsible for the format negotiation between
|
|
|
|
|
the drag source and the drop target. If all goes well, then \helpref{OnData}{wxdroptargetondata}
|
|
|
|
|
will get called and the wxDataObject belonging to the drop target can get
|
|
|
|
|
filled with data.
|
|
|
|
|
\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
|
|
|
|
|
wxDragCopy or wxDragMove depending on the state of the keys <Ctrl>, <Shift>
|
|
|
|
|
and <Alt> at the moment of the drop. There is currently no way for the drop
|
|
|
|
|
target to change this return code.
|
|
|
|
|
\end{itemize}
|
|
|
|
|
|
|
|
|
|