1 ///////////////////////////////////////////////////////////////////////////////
3 // Purpose: declaration of the wxDropTarget class
4 // Author: Robert Roebling
6 // Copyright: (c) 1998 Vadim Zeitlin, Robert Roebling
7 // Licence: wxWindows licence
8 ///////////////////////////////////////////////////////////////////////////////
10 #ifndef _WX_GTK_DND_H_
11 #define _WX_GTK_DND_H_
15 // ----------------------------------------------------------------------------
17 // ----------------------------------------------------------------------------
19 // this macro may be used instead for wxDropSource ctor arguments: it will use
20 // the icon 'name' from an XPM file under GTK, but will expand to something
21 // else under MSW. If you don't use it, you will have to use #ifdef in the
23 #define wxDROP_ICON(name) wxICON(name)
25 //-------------------------------------------------------------------------
27 //-------------------------------------------------------------------------
29 class WXDLLIMPEXP_CORE wxDropTarget
: public wxDropTargetBase
32 wxDropTarget(wxDataObject
*dataObject
= NULL
);
34 virtual wxDragResult
OnDragOver(wxCoord x
, wxCoord y
, wxDragResult def
);
35 virtual bool OnDrop(wxCoord x
, wxCoord y
);
36 virtual wxDragResult
OnData(wxCoord x
, wxCoord y
, wxDragResult def
);
37 virtual bool GetData();
39 // Can only be called during OnXXX methods.
40 wxDataFormat
GetMatchingPair();
44 GdkAtom
GTKGetMatchingPair(bool quiet
= false);
45 wxDragResult
GTKFigureOutSuggestedAction();
47 void GtkRegisterWidget( GtkWidget
*widget
);
48 void GtkUnregisterWidget( GtkWidget
*widget
);
50 GdkDragContext
*m_dragContext
;
51 GtkWidget
*m_dragWidget
;
52 GtkSelectionData
*m_dragData
;
54 bool m_firstMotion
; // gdk has no "gdk_drag_enter" event
56 void GTKSetDragContext( GdkDragContext
*dc
) { m_dragContext
= dc
; }
57 void GTKSetDragWidget( GtkWidget
*w
) { m_dragWidget
= w
; }
58 void GTKSetDragData( GtkSelectionData
*sd
) { m_dragData
= sd
; }
59 void GTKSetDragTime(unsigned time
) { m_dragTime
= time
; }
62 //-------------------------------------------------------------------------
64 //-------------------------------------------------------------------------
66 class WXDLLIMPEXP_CORE wxDropSource
: public wxDropSourceBase
69 // constructor. set data later with SetData()
70 wxDropSource( wxWindow
*win
= NULL
,
71 const wxIcon
©
= wxNullIcon
,
72 const wxIcon
&move
= wxNullIcon
,
73 const wxIcon
&none
= wxNullIcon
);
75 // constructor for setting one data object
76 wxDropSource( wxDataObject
& data
,
78 const wxIcon
©
= wxNullIcon
,
79 const wxIcon
&move
= wxNullIcon
,
80 const wxIcon
&none
= wxNullIcon
);
82 virtual ~wxDropSource();
84 // set the icon corresponding to given drag result
85 void SetIcon(wxDragResult res
, const wxIcon
& icon
)
87 if ( res
== wxDragCopy
)
89 else if ( res
== wxDragMove
)
96 virtual wxDragResult
DoDragDrop(int flags
= wxDrag_CopyOnly
);
98 void PrepareIcon( int action
, GdkDragContext
*context
);
101 GtkWidget
*m_iconWindow
;
102 GdkDragContext
*m_dragContext
;
105 wxDragResult m_retValue
;
113 // common part of both ctors
114 void SetIcons(const wxIcon
& copy
,
118 // GTK implementation
119 void GTKConnectDragSignals();
120 void GTKDisconnectDragSignals();
124 #endif // _WX_GTK_DND_H_