gdkdnd.h 4.06 KB
Newer Older
Owen Taylor's avatar
Started  
Owen Taylor committed
1 2 3 4 5 6 7 8 9 10 11
#ifndef __GDK_DND_H__
#define __GDK_DND_H__

#include <gdk/gdktypes.h>

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

typedef struct _GdkDragContext        GdkDragContext;

12 13
typedef enum
{
Owen Taylor's avatar
Started  
Owen Taylor committed
14 15 16 17 18 19 20 21
  GDK_ACTION_DEFAULT = 1 << 0,
  GDK_ACTION_COPY    = 1 << 1,
  GDK_ACTION_MOVE    = 1 << 2,
  GDK_ACTION_LINK    = 1 << 3,
  GDK_ACTION_PRIVATE = 1 << 4,
  GDK_ACTION_ASK     = 1 << 5
} GdkDragAction;

22 23
typedef enum
{
Owen Taylor's avatar
Started  
Owen Taylor committed
24 25 26 27 28 29
  GDK_DRAG_PROTO_MOTIF,
  GDK_DRAG_PROTO_XDND,
  GDK_DRAG_PROTO_ROOTWIN,	  /* A root window with nobody claiming
				   * drags */
  GDK_DRAG_PROTO_NONE,		  /* Not a valid drag window */
  GDK_DRAG_PROTO_WIN32_DROPFILES, /* The simple WM_DROPFILES dnd */
Elliot Lee's avatar
Elliot Lee committed
30 31
  GDK_DRAG_PROTO_OLE2,		  /* The complex OLE2 dnd (not implemented) */
  GDK_DRAG_PROTO_LOCAL            /* Intra-app */
Owen Taylor's avatar
Started  
Owen Taylor committed
32 33
} GdkDragProtocol;

34
/* Object that holds information about a drag in progress.
Owen Taylor's avatar
Started  
Owen Taylor committed
35 36
 * this is used on both source and destination sides.
 */
37 38 39 40 41 42 43 44 45 46

typedef struct _GdkDragContextClass GdkDragContextClass;

#define GDK_TYPE_DRAG_CONTEXT              (gdk_drag_context_get_type ())
#define GDK_DRAG_CONTEXT(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_DRAG_CONTEXT, GdkDragContext))
#define GDK_DRAG_CONTEXT_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_DRAG_CONTEXT, GdkDragContextClass))
#define GDK_IS_DRAG_CONTEXT(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_DRAG_CONTEXT))
#define GDK_IS_DRAG_CONTEXT_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_DRAG_CONTEXT))
#define GDK_DRAG_CONTEXT_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_DRAG_CONTEXT, GdkDragContextClass))

Owen Taylor's avatar
Started  
Owen Taylor committed
47
struct _GdkDragContext {
48 49 50 51
  GObject parent_instance;

  /*< public >*/
  
Owen Taylor's avatar
Started  
Owen Taylor committed
52 53 54 55 56 57 58 59 60 61 62 63 64
  GdkDragProtocol protocol;
  
  gboolean is_source;
  
  GdkWindow *source_window;
  GdkWindow *dest_window;

  GList *targets;
  GdkDragAction actions;
  GdkDragAction suggested_action;
  GdkDragAction action; 

  guint32 start_time;
65 66 67 68 69 70 71 72 73 74

  /*< private >*/
  
  gpointer windowing_data;
};

struct _GdkDragContextClass {
  GObjectClass parent_class;

  
Owen Taylor's avatar
Started  
Owen Taylor committed
75 76 77 78
};

/* Drag and Drop */

Elliot Lee's avatar
Elliot Lee committed
79
GType            gdk_drag_context_get_type   (void) G_GNUC_CONST;
Owen Taylor's avatar
Started  
Owen Taylor committed
80
GdkDragContext * gdk_drag_context_new        (void);
Matthias Clasen's avatar
Matthias Clasen committed
81 82

#ifndef GDK_DISABLE_DEPRECATED
Owen Taylor's avatar
Started  
Owen Taylor committed
83 84
void             gdk_drag_context_ref        (GdkDragContext *context);
void             gdk_drag_context_unref      (GdkDragContext *context);
Matthias Clasen's avatar
Matthias Clasen committed
85
#endif
Owen Taylor's avatar
Started  
Owen Taylor committed
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103

/* Destination side */

void             gdk_drag_status        (GdkDragContext   *context,
				         GdkDragAction     action,
					 guint32           time);
void             gdk_drop_reply         (GdkDragContext   *context,
					 gboolean          ok,
					 guint32           time);
void             gdk_drop_finish        (GdkDragContext   *context,
					 gboolean          success,
					 guint32           time);
GdkAtom          gdk_drag_get_selection (GdkDragContext   *context);

/* Source side */

GdkDragContext * gdk_drag_begin      (GdkWindow      *window,
				      GList          *targets);
104 105 106 107 108 109 110 111 112

guint32 gdk_drag_get_protocol_for_display (GdkDisplay      *display,
					   guint32          xid,
					   GdkDragProtocol *protocol);
#ifndef GDK_MULTIHEAD_SAFE
guint32 gdk_drag_get_protocol             (guint32          xid,
					   GdkDragProtocol *protocol);
#endif /* GDK_MULTIHEAD_SAFE */

Owen Taylor's avatar
Started  
Owen Taylor committed
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
void             gdk_drag_find_window (GdkDragContext   *context,
				       GdkWindow       *drag_window,
			 	       gint             x_root,
				       gint             y_root,
				       GdkWindow      **dest_window,
				       GdkDragProtocol *protocol);
gboolean        gdk_drag_motion      (GdkDragContext *context,
				      GdkWindow      *dest_window,
				      GdkDragProtocol protocol,
				      gint            x_root, 
				      gint            y_root,
				      GdkDragAction   suggested_action,
				      GdkDragAction   possible_actions,
				      guint32         time);
void            gdk_drag_drop        (GdkDragContext *context,
				      guint32         time);
void            gdk_drag_abort       (GdkDragContext *context,
				      guint32         time);

#ifdef __cplusplus
}
#endif /* __cplusplus */

136
#endif /* __GDK_DND_H__ */