Package: gtk

Function gtk:drag-begin-with-coordinates

Lambda List

gtk:drag-begin-with-coordinates (widget targets actions button event x y)

Arguments

widget -- a gtk:widget source widget
targets -- a gtk:target-list instance with the targets, data formats, in which the source can provide the data
actions -- a gdk:drag-action bitmask of the allowed drag actions for this drag
button -- an integer with the button the user clicked to start the drag
event -- a gdk:event event that triggered the start of the drag, or nil if none can be obtained
x -- an integer with the initial x coordinate to start dragging from, in the coordinate space of the widget, if -1 is passed, the coordinates are retrieved from event or the current pointer position
y -- an integer with the initial y coordinate to start dragging from, in the coordinate space of the widget, if -1 is passed, the coordinates are retrieved from event or the current pointer position

Return Value

The gdk:drag-context object for this drag.

Details

Initiates a drag on the source side. The function only needs to be used when the application is starting drags itself, and is not needed when the gtk:drag-source-set function is used.

The event argument is used to retrieve the timestamp that will be used internally to grab the pointer. If the event argument is nil, then the gdk:+current-time+ value will be used. However, you should try to pass a real event in all cases, since that can be used to get information about the drag.

Generally there are three cases when you want to start a drag by hand by calling this function:
  1. During a "button-press-event" handler, if you want to start a drag immediately when the user presses the mouse button. Pass the event that you have in your "button-press-event" handler.
  2. During a "motion-notify-event" handler, if you want to start a drag when the mouse moves past a certain threshold distance after a button press. Pass the event that you have in your "motion-notify-event" handler.
  3. During a timeout handler, if you want to start a drag after the mouse button is held down for some time. Try to save the last event that you got from the mouse, using the gdk:event-copy function, and pass it to this function. If you really cannot pass a real event, pass the nil value instead.
 

See also

#2023-3-17