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();
42 GdkAtom
GtkGetMatchingPair();
44 void GtkRegisterWidget( GtkWidget
*widget
);
45 void GtkUnregisterWidget( GtkWidget
*widget
);
47 GdkDragContext
*m_dragContext
;
48 GtkWidget
*m_dragWidget
;
49 GtkSelectionData
*m_dragData
;
51 bool m_firstMotion
; // gdk has no "gdk_drag_enter" event
53 void GtkSetDragContext( GdkDragContext
*dc
) { m_dragContext
= dc
; }
54 void GtkSetDragWidget( GtkWidget
*w
) { m_dragWidget
= w
; }
55 void GtkSetDragData( GtkSelectionData
*sd
) { m_dragData
= sd
; }
56 void GtkSetDragTime( guint time
) { m_dragTime
= time
; }
59 //-------------------------------------------------------------------------
61 //-------------------------------------------------------------------------
63 class WXDLLIMPEXP_CORE wxDropSource
: public wxDropSourceBase
66 // constructor. set data later with SetData()
67 wxDropSource( wxWindow
*win
= NULL
,
68 const wxIcon
©
= wxNullIcon
,
69 const wxIcon
&move
= wxNullIcon
,
70 const wxIcon
&none
= wxNullIcon
);
72 // constructor for setting one data object
73 wxDropSource( wxDataObject
& data
,
75 const wxIcon
©
= wxNullIcon
,
76 const wxIcon
&move
= wxNullIcon
,
77 const wxIcon
&none
= wxNullIcon
);
79 virtual ~wxDropSource();
82 virtual wxDragResult
DoDragDrop(int flags
= wxDrag_CopyOnly
);
84 void PrepareIcon( int action
, GdkDragContext
*context
);
87 GtkWidget
*m_iconWindow
;
88 GdkDragContext
*m_dragContext
;
91 wxDragResult m_retValue
;
99 // common part of both ctors
100 void SetIcons(const wxIcon
& copy
,
104 // GTK implementation
105 void GTKConnectDragSignals();
106 void GTKDisconnectDragSignals();
110 #endif // _WX_GTK_DND_H_