X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8907154c1a8a6882c6797d1f16393ddfb23e7f3a..66c2bf7b1d9326fb650acfaae22ec50528cfbf7c:/include/wx/gtk/dnd.h diff --git a/include/wx/gtk/dnd.h b/include/wx/gtk/dnd.h index 13a381f50e..0aea7b41f6 100644 --- a/include/wx/gtk/dnd.h +++ b/include/wx/gtk/dnd.h @@ -1,35 +1,15 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: dnd.h +// Name: wx/gtk/dnd.h // Purpose: declaration of the wxDropTarget class // Author: Robert Roebling -// RCS-ID: $Id$ // Copyright: (c) 1998 Vadim Zeitlin, Robert Roebling // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// -#ifndef __GTKDNDH__ -#define __GTKDNDH__ +#ifndef _WX_GTK_DND_H_ +#define _WX_GTK_DND_H_ -#if wxUSE_DRAG_AND_DROP - -#include "wx/object.h" -#include "wx/string.h" -#include "wx/dataobj.h" -#include "wx/cursor.h" #include "wx/icon.h" -#include "wx/gdicmn.h" - -//------------------------------------------------------------------------- -// classes -//------------------------------------------------------------------------- - -class WXDLLIMPEXP_CORE wxWindow; - -class WXDLLIMPEXP_CORE wxDropTarget; -class WXDLLIMPEXP_CORE wxTextDropTarget; -class WXDLLIMPEXP_CORE wxFileDropTarget; - -class WXDLLIMPEXP_CORE wxDropSource; // ---------------------------------------------------------------------------- // macros @@ -48,30 +28,34 @@ class WXDLLIMPEXP_CORE wxDropSource; class WXDLLIMPEXP_CORE wxDropTarget: public wxDropTargetBase { public: - wxDropTarget(wxDataObject *dataObject = (wxDataObject*) NULL ); + wxDropTarget(wxDataObject *dataObject = NULL ); 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(); - // implementation + // Can only be called during OnXXX methods. + wxDataFormat GetMatchingPair(); + + // implementation - GdkAtom GetMatchingPair(); + GdkAtom GTKGetMatchingPair(bool quiet = false); + wxDragResult GTKFigureOutSuggestedAction(); - void RegisterWidget( GtkWidget *widget ); - void UnregisterWidget( GtkWidget *widget ); + void GtkRegisterWidget( GtkWidget *widget ); + void GtkUnregisterWidget( GtkWidget *widget ); GdkDragContext *m_dragContext; GtkWidget *m_dragWidget; GtkSelectionData *m_dragData; - guint m_dragTime; + unsigned m_dragTime; bool m_firstMotion; // gdk has no "gdk_drag_enter" event - void SetDragContext( GdkDragContext *dc ) { m_dragContext = dc; } - void SetDragWidget( GtkWidget *w ) { m_dragWidget = w; } - void SetDragData( GtkSelectionData *sd ) { m_dragData = sd; } - void SetDragTime( guint time ) { m_dragTime = time; } + void GTKSetDragContext( GdkDragContext *dc ) { m_dragContext = dc; } + void GTKSetDragWidget( GtkWidget *w ) { m_dragWidget = w; } + void GTKSetDragData( GtkSelectionData *sd ) { m_dragData = sd; } + void GTKSetDragTime(unsigned time) { m_dragTime = time; } }; //------------------------------------------------------------------------- @@ -82,7 +66,7 @@ class WXDLLIMPEXP_CORE wxDropSource: public wxDropSourceBase { public: // constructor. set data later with SetData() - wxDropSource( wxWindow *win = (wxWindow *)NULL, + wxDropSource( wxWindow *win = NULL, const wxIcon © = wxNullIcon, const wxIcon &move = wxNullIcon, const wxIcon &none = wxNullIcon); @@ -96,13 +80,20 @@ public: virtual ~wxDropSource(); + // set the icon corresponding to given drag result + void SetIcon(wxDragResult res, const wxIcon& icon) + { + if ( res == wxDragCopy ) + m_iconCopy = icon; + else if ( res == wxDragMove ) + m_iconMove = icon; + else + m_iconNone = icon; + } + // start drag action virtual wxDragResult DoDragDrop(int flags = wxDrag_CopyOnly); - // GTK implementation - void RegisterWindow(); - void UnregisterWindow(); - void PrepareIcon( int action, GdkDragContext *context ); GtkWidget *m_widget; @@ -122,9 +113,12 @@ private: void SetIcons(const wxIcon& copy, const wxIcon& move, const wxIcon& none); -}; -#endif // wxUSE_DRAG_AND_DROP + // GTK implementation + void GTKConnectDragSignals(); + void GTKDisconnectDragSignals(); + +}; -#endif //__GTKDNDH__ +#endif // _WX_GTK_DND_H_