#pragma interface
#endif
-#include "wx/defs.h"
-
#if wxUSE_DRAG_AND_DROP
#include "wx/object.h"
class wxDropTarget;
class wxTextDropTarget;
class wxFileDropTarget;
-class wxPrivateDropTarget;
class wxDropSource;
// wxDropTarget
//-------------------------------------------------------------------------
-class wxDropTarget: public wxObject
+class wxDropTarget: public wxDropTargetBase
{
public:
- wxDropTarget( wxDataObject *data );
- ~wxDropTarget();
-
- /* may be overridden to react to events */
- virtual bool OnEnter( int x, int y );
-
- virtual void OnLeave();
-
- /* may be overridden to reject certain formats or drops
- on certain areas. always returns TRUE by default
- indicating that you'd accept the data from the drag. */
- virtual bool OnMove( int x, int y );
+ wxDropTarget(wxDataObject *dataObject = (wxDataObject*) NULL );
- /* has to be overridden to accept a drop event. call
- IsSupported() to ask which formats are available
- and then call RequestData() to indicate the format
- you request. */
- virtual bool OnDrop( int x, int y );
+ virtual wxDragResult OnDragOver(wxCoord x, wxCoord y, wxDragResult def);
+ virtual bool OnDrop(wxCoord x, wxCoord y);
+ virtual wxDragResult OnData(wxCoord x, wxCoord y, wxDragResult def);
+ virtual bool GetData();
- /* this gets called once the data has actually arrived.
- it will call GetData() to fill up its wxDataObject */
- virtual bool OnData( int x, int y );
-
- /* fill data with data from the dragging source */
- bool GetData();
-
-// implementation
+ // implementation
GdkAtom GetMatchingPair();
void RegisterWidget( GtkWidget *widget );
void UnregisterWidget( GtkWidget *widget );
- wxDataObject *m_data;
GdkDragContext *m_dragContext;
GtkWidget *m_dragWidget;
GtkSelectionData *m_dragData;
// wxDropSource
//-------------------------------------------------------------------------
-enum wxDragResult
-{
- wxDragError, // error prevented the d&d operation from completing
- wxDragNone, // drag target didn't accept the data
- wxDragCopy, // the data was successfully copied
- wxDragMove, // the data was successfully moved (MSW only)
- wxDragCancel // the operation was cancelled by user (not an error)
-};
-
-class wxDropSource: public wxObject
+class wxDropSource: public wxDropSourceBase
{
public:
+ /* constructor. set data later with SetData() */
+ wxDropSource( wxWindow *win,
+ const wxIcon &go = wxNullIcon );
- /* constructor. set data later with SetData() */
- wxDropSource( wxWindow *win, const wxIcon &go = wxNullIcon, const wxIcon &stop = wxNullIcon );
-
- wxDropSource( wxDataObject& data, wxWindow *win, const wxIcon &go = wxNullIcon, const wxIcon &stop = wxNullIcon );
- ~wxDropSource();
-
- void SetData( wxDataObject& data );
-
- /* start drag action */
- wxDragResult DoDragDrop( bool bAllowMove = FALSE );
+ /* constructor for setting one data object */
+ wxDropSource( wxDataObject& data,
+ wxWindow *win,
+ const wxIcon &go = wxNullIcon );
- /* override to give feedback */
- virtual bool GiveFeedback( wxDragResult WXUNUSED(effect), bool WXUNUSED(bScrolling) ) { return TRUE; }
+ ~wxDropSource();
- /* GTK implementation */
+ /* start drag action */
+ virtual wxDragResult DoDragDrop( bool bAllowMove = FALSE );
- void RegisterWindow();
- void UnregisterWindow();
+ /* GTK implementation */
+ void RegisterWindow();
+ void UnregisterWindow();
- GtkWidget *m_widget;
- wxWindow *m_window;
- wxDragResult m_retValue;
- wxDataObject *m_data;
+ void PrepareIcon( int hot_x, int hot_y, GdkDragContext *context );
- wxCursor m_defaultCursor;
- wxCursor m_goaheadCursor;
+ GtkWidget *m_widget;
+ GtkWidget *m_iconWindow;
+ GdkDragContext *m_dragContext;
+ wxWindow *m_window;
- wxIcon m_goIcon;
- wxIcon m_stopIcon;
+ wxDragResult m_retValue;
+ wxIcon m_icon;
- bool m_waiting;
+ bool m_waiting;
};
#endif