GDK Reference Manual | ||||
---|---|---|---|---|
#include <gdk/gdk.h> GdkAtom gdk_drag_get_selection (GdkDragContext *context); void gdk_drag_abort (GdkDragContext *context, guint32 time_); void gdk_drop_reply (GdkDragContext *context, gboolean ok, guint32 time_); GdkDragContext* gdk_drag_context_new (void); void gdk_drag_drop (GdkDragContext *context, guint32 time_); void gdk_drag_find_window (GdkDragContext *context, GdkWindow *drag_window, gint x_root, gint y_root, GdkWindow **dest_window, GdkDragProtocol *protocol); void gdk_drag_find_window_for_screen (GdkDragContext *context, GdkWindow *drag_window, GdkScreen *screen, gint x_root, gint y_root, GdkWindow **dest_window, GdkDragProtocol *protocol); void gdk_drag_context_ref (GdkDragContext *context); GdkDragContext* gdk_drag_begin (GdkWindow *window, GList *targets); 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_drop_finish (GdkDragContext *context, gboolean success, guint32 time_); guint32 gdk_drag_get_protocol (guint32 xid, GdkDragProtocol *protocol); guint32 gdk_drag_get_protocol_for_display (GdkDisplay *display, guint32 xid, GdkDragProtocol *protocol); enum GdkDragProtocol; void gdk_drag_context_unref (GdkDragContext *context); GdkDragContext; enum GdkDragAction; void gdk_drag_status (GdkDragContext *context, GdkDragAction action, guint32 time_); gboolean gdk_drag_drop_succeeded (GdkDragContext *context);
These functions provide a low level interface for drag and drop. The X backend of GDK supports both the Xdnd and Motif drag and drop protocols transparently, the Win32 backend supports the WM_DROPFILES protocol.
GTK+ provides a higher level abstraction based on top of these functions, and so they are not normally needed in GTK+ applications. See the Drag and Drop section of the GTK+ documentation for more information.
GdkAtom gdk_drag_get_selection (GdkDragContext *context);
Returns the selection atom for the current source window.
context : |
a GdkDragContext. |
Returns : | the selection atom. |
void gdk_drag_abort (GdkDragContext *context, guint32 time_);
Aborts a drag without dropping.
This function is called by the drag source.
context : |
a GdkDragContext. |
time_ : |
the timestamp for this operation. |
void gdk_drop_reply (GdkDragContext *context, gboolean ok, guint32 time_);
Accepts or rejects a drop.
This function is called by the drag destination in response to a drop initiated by the drag source.
context : |
a GdkDragContext. |
ok : |
TRUE if the drop is accepted.
|
time_ : |
the timestamp for this operation. |
GdkDragContext* gdk_drag_context_new (void);
Creates a new GdkDragContext.
Returns : | the newly created GdkDragContext. |
void gdk_drag_drop (GdkDragContext *context, guint32 time_);
Drops on the current destination.
This function is called by the drag source.
context : |
a GdkDragContext. |
time_ : |
the timestamp for this operation. |
void gdk_drag_find_window (GdkDragContext *context, GdkWindow *drag_window, gint x_root, gint y_root, GdkWindow **dest_window, GdkDragProtocol *protocol);
Finds the destination window and DND protocol to use at the given pointer position.
This function is called by the drag source to obtain the
dest_window
and protocol
parameters for gdk_drag_motion()
.
context : |
a GdkDragContext. |
drag_window : |
a window which may be at the pointer position, but should be ignored, since it is put up by the drag source as an icon. |
x_root : |
the x position of the pointer in root coordinates. |
y_root : |
the y position of the pointer in root coordinates. |
dest_window : |
location to store the destination window in. |
protocol : |
location to store the DND protocol in. |
void gdk_drag_find_window_for_screen (GdkDragContext *context, GdkWindow *drag_window, GdkScreen *screen, gint x_root, gint y_root, GdkWindow **dest_window, GdkDragProtocol *protocol);
Finds the destination window and DND protocol to use at the given pointer position.
This function is called by the drag source to obtain the
dest_window
and protocol
parameters for gdk_drag_motion()
.
context : |
a GdkDragContext |
drag_window : |
a window which may be at the pointer position, but should be ignored, since it is put up by the drag source as an icon. |
screen : |
the screen where the destination window is sought. |
x_root : |
the x position of the pointer in root coordinates. |
y_root : |
the y position of the pointer in root coordinates. |
dest_window : |
location to store the destination window in. |
protocol : |
location to store the DND protocol in. |
Since 2.2
void gdk_drag_context_ref (GdkDragContext *context);
gdk_drag_context_ref
is deprecated and should not be used in newly-written code.
Deprecated function; use g_object_ref()
instead.
context : |
a GdkDragContext. |
GdkDragContext* gdk_drag_begin (GdkWindow *window, GList *targets);
Starts a drag and creates a new drag context for it.
This function is called by the drag source.
window : |
the source window for this drag. |
targets : |
the list of offered targets. |
Returns : | a newly created GdkDragContext. |
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_);
Updates the drag context when the pointer moves or the set of actions changes.
This function is called by the drag source.
context : |
a GdkDragContext. |
dest_window : |
the new destination window, obtained by
gdk_drag_find_window() .
|
protocol : |
the DND protocol in use, obtained by gdk_drag_find_window() .
|
x_root : |
the x position of the pointer in root coordinates. |
y_root : |
the y position of the pointer in root coordinates. |
suggested_action : |
the suggested action. |
possible_actions : |
the possible actions. |
time_ : |
the timestamp for this operation. |
Returns : | FIXME |
void gdk_drop_finish (GdkDragContext *context, gboolean success, guint32 time_);
Ends the drag operation after a drop.
This function is called by the drag destination.
context : |
a GtkDragContext. |
success : |
TRUE if the data was successfully received.
|
time_ : |
the timestamp for this operation. |
guint32 gdk_drag_get_protocol (guint32 xid, GdkDragProtocol *protocol);
Finds out the DND protocol supported by a window.
xid : |
the X id of the destination window. |
protocol : |
location where the supported DND protocol is returned. |
Returns : | the X id of the window where the drop should happen. This
may be xid or the X id of a proxy window, or None if xid doesn't
support Drag and Drop.
|
guint32 gdk_drag_get_protocol_for_display (GdkDisplay *display, guint32 xid, GdkDragProtocol *protocol);
Finds out the DND protocol supported by a window.
display : |
the GdkDisplay where the destination window resides |
xid : |
the X id of the destination window. |
protocol : |
location where the supported DND protocol is returned. |
Returns : | the X id of the window where the drop should happen. This
may be xid or the X id of a proxy window, or None if xid doesn't
support Drag and Drop.
|
Since 2.2
typedef enum { 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 */ GDK_DRAG_PROTO_OLE2, /* The complex OLE2 dnd (not implemented) */ GDK_DRAG_PROTO_LOCAL /* Intra-app */ } GdkDragProtocol;
Used in GdkDragContext to indicate the protocol according to which DND is done.
void gdk_drag_context_unref (GdkDragContext *context);
gdk_drag_context_unref
is deprecated and should not be used in newly-written code.
Deprecated function; use g_object_unref()
instead.
context : |
a GdkDragContext. |
typedef struct { GObject parent_instance; GdkDragProtocol protocol; gboolean is_source; GdkWindow *source_window; GdkWindow *dest_window; GList *targets; GdkDragAction actions; GdkDragAction suggested_action; GdkDragAction action; guint32 start_time; } GdkDragContext;
A GdkDragContext holds information about a drag in progress. It is used on both source and destination sides.
GObject parent_instance ; |
the parent instance |
GdkDragProtocol protocol ; |
the DND protocol which governs this drag. |
gboolean is_source ; |
TRUE if the context is used on the source side.
|
GdkWindow *source_window ; |
the source of this drag. |
GdkWindow *dest_window ; |
the destination window of this drag. |
GList *targets ; |
a list of targets offered by the source. |
GdkDragAction actions ; |
a bitmask of actions proposed by the source when
suggested_action is GDK_ACTION_ASK .
|
GdkDragAction suggested_action ; |
the action suggested by the source. |
GdkDragAction action ; |
the action chosen by the destination. |
guint32 start_time ; |
a timestamp recording the start time of this drag. |
typedef enum { 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;
Used in GdkDragContext to indicate what the destination should do with the dropped data.
void gdk_drag_status (GdkDragContext *context, GdkDragAction action, guint32 time_);
Selects one of the actions offered by the drag source.
This function is called by the drag destination in response to
gdk_drag_motion()
called by the drag source.
context : |
a GdkDragContext. |
action : |
the selected action which will be taken when a drop happens, or 0 to indicate that a drop will not be accepted. |
time_ : |
the timestamp for this operation. |
gboolean gdk_drag_drop_succeeded (GdkDragContext *context);
Returns wether the dropped data has been successfully
transferred. This function is intended to be used while
handling a GDK_DROP_FINISHED
event, its return value is
meaningless at other times.
context : |
a GdkDragContext |
Returns : | TRUE if the drop was successful.
|
Since 2.6