X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dface61ccba162c922b25d18aca2ebc4e6f03312..340196c001690cd784e7e3f2fc54cd449324f914:/docs/latex/wx/tdnd.tex diff --git a/docs/latex/wx/tdnd.tex b/docs/latex/wx/tdnd.tex index 85346110cc..a2a970a951 100644 --- a/docs/latex/wx/tdnd.tex +++ b/docs/latex/wx/tdnd.tex @@ -7,10 +7,8 @@ Classes: \helpref{wxDataObject}{wxdataobject}, \helpref{wxTextDropTarget}{wxtextdroptarget}, \helpref{wxFileDropTarget}{wxfiledroptarget} -Samples: see the dnd sample. - -Headers: , or -(note that wxUSE\_DRAG\_AND\_DROP must be defined in setup.h) +Note that wxUSE\_DRAG\_AND\_DROP must be defined in setup.h in order +to use Drag'n'Drop in wxWindows. This overview describes wxWindows support for drag and drop and clipboard operations. Both of these topics are discussed here because, in fact, they're @@ -34,33 +32,22 @@ user elsewhere, you should implement the following steps: initialized with the data you wish to drag. For example: \begin{verbatim} - wxTextDataObject data("This string will be dragged."); + wxDataObject *my_data = new wxTextDataObject data("This string will be dragged."); \end{verbatim} - -Of course, the data object may contain arbitrary data of any type, but for -this you should derive your own class from \helpref{wxDataObject}{wxdataobject} overriding all of its pure virtual -functions. - \item{\bf Drag start:} To start dragging process (typically in response to a mouse click) you must call \helpref{DoDragDrop}{wxdropsourcedodragdrop} function of wxDropSource object which should be constructed like this: \begin{verbatim} - wxDropSource dragSource(data, this); - - // or also: - - wxDropSource dragSource(this); - dragSource.SetData(data); + 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 XDnD protocol -under X Windows), the corresponding \helpref{wxDropTarget}{wxdroptarget} methods +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 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 @@ -84,16 +71,13 @@ 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. - +queries 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 (, and ) at the moment of drop. There is currently no way for the drop