+class wxDropTarget: public wxObject
+{
+public:
+
+ wxDropTarget();
+ ~wxDropTarget();
+
+ /* may be overridden to react to events */
+ virtual void OnEnter();
+ virtual void OnLeave();
+ virtual bool OnMove( int x, int y );
+
+ /* has te be overridden to get data */
+ virtual bool OnDrop( int x, int y );
+
+ /* called to query formats available */
+ bool IsSupported( wxDataFormat format );
+
+ /* fill data with data on the clipboard (if available) */
+ bool GetData( wxDataObject *data );
+
+// implementation
+
+ void RegisterWidget( GtkWidget *widget );
+ void UnregisterWidget( GtkWidget *widget );
+
+ GdkDragContext *m_dragContext;
+
+ void SetDragContext( GdkDragContext *dc ) { m_dragContext = dc; }
+ GdkDragContext *GetDragContext() { return m_dragContext; }
+};
+
+//-------------------------------------------------------------------------
+// wxTextDropTarget
+//-------------------------------------------------------------------------
+
+class wxTextDropTarget: public wxDropTarget
+{
+public:
+
+ wxTextDropTarget() {}
+
+ virtual bool OnMove( int x, int y );
+ virtual bool OnDrop( int x, int y );
+
+ /* you have to override OnDropData to get at the text */
+ virtual bool OnDropText( int x, int y, const char *text ) = 0;
+
+};
+
+//-------------------------------------------------------------------------
+// wxPrivateDropTarget
+//-------------------------------------------------------------------------
+
+class wxPrivateDropTarget: public wxDropTarget
+{
+public:
+
+ /* sets id to "application/myprogram" where "myprogram" is the
+ same as wxApp->GetAppName() */
+ wxPrivateDropTarget();
+ /* see SetId() below for explanation */
+ wxPrivateDropTarget( const wxString &id );
+
+ virtual bool OnMove( int x, int y );
+ virtual bool OnDrop( int x, int y );
+
+ /* you have to override OnDropData to get at the data */
+ virtual bool OnDropData( int x, int y, void *data, size_t size ) = 0;
+
+ /* the string ID identifies the format of clipboard or DnD data. a word
+ processor would e.g. add a wxTextDataObject and a wxPrivateDataObject
+ to the clipboard - the latter with the Id "application/wxword" or
+ "image/png". */
+ void SetId( const wxString& id ) { m_id = id; }
+ wxString GetId() { return m_id; }
+
+private:
+
+ wxString m_id;
+};
+
+//----------------------------------------------------------------------------
+// A drop target which accepts files (dragged from File Manager or Explorer)
+//----------------------------------------------------------------------------
+
+class wxFileDropTarget: public wxDropTarget
+{
+public:
+
+ wxFileDropTarget() {}
+
+ virtual bool OnMove( int x, int y );
+ virtual bool OnDrop( int x, int y );
+
+ /* you have to override OnDropFiles to get at the file names */
+ virtual bool OnDropFiles( int x, int y, size_t nFiles, const char * const aszFiles[] ) = 0;
+
+};
+
+#else
+
+//-------------------------------------------------------------------------
+// wxDropTarget
+//-------------------------------------------------------------------------
+
+class wxDropTarget: public wxObject