gi-gtk-4.0.2: Gtk bindings
CopyrightWill Thompson Iñaki García Etxebarria and Jonas Platte
LicenseLGPL-2.1
MaintainerIñaki García Etxebarria
Safe HaskellNone
LanguageHaskell2010

GI.Gtk.Objects.DropTarget

Description

GtkDropTarget is an event controller implementing a simple way to receive Drag-and-Drop operations.

The most basic way to use a DropTarget to receive drops on a widget is to create it via dropTargetNew passing in the GType of the data you want to receive and connect to the GtkDropTarget[drop](#g:signal:drop) signal to receive the data.

DropTarget supports more options, such as:

  • rejecting potential drops via the accept signal and the dropTargetReject function to let other drop targets handle the drop
  • tracking an ongoing drag operation before the drop via the enter, motion and leave signals
  • configuring how to receive data by setting the DropTarget:preload property and listening for its availability via the DropTarget:value property

However, DropTarget is ultimately modeled in a synchronous way and only supports data transferred via GType. If you want full control over an ongoing drop, the DropTargetAsync object gives you this ability.

While a pointer is dragged over the drop target's widget and the drop has not been rejected, that widget will receive the StateFlagsDropActive state, which can be used to style the widget.

Synopsis

Exported types

newtype DropTarget Source #

Memory-managed wrapper type.

Instances

Instances details
Eq DropTarget Source # 
Instance details

Defined in GI.Gtk.Objects.DropTarget

IsGValue DropTarget Source #

Convert DropTarget to and from GValue with toGValue and fromGValue.

Instance details

Defined in GI.Gtk.Objects.DropTarget

ManagedPtrNewtype DropTarget Source # 
Instance details

Defined in GI.Gtk.Objects.DropTarget

TypedObject DropTarget Source # 
Instance details

Defined in GI.Gtk.Objects.DropTarget

Methods

glibType :: IO GType #

GObject DropTarget Source # 
Instance details

Defined in GI.Gtk.Objects.DropTarget

HasParentTypes DropTarget Source # 
Instance details

Defined in GI.Gtk.Objects.DropTarget

type ParentTypes DropTarget Source # 
Instance details

Defined in GI.Gtk.Objects.DropTarget

class (GObject o, IsDescendantOf DropTarget o) => IsDropTarget o Source #

Type class for types which can be safely cast to DropTarget, for instance with toDropTarget.

Instances

Instances details
(GObject o, IsDescendantOf DropTarget o) => IsDropTarget o Source # 
Instance details

Defined in GI.Gtk.Objects.DropTarget

toDropTarget :: (MonadIO m, IsDropTarget o) => o -> m DropTarget Source #

Cast to DropTarget, for types for which this is known to be safe. For general casts, use castTo.

Methods

Overloaded methods

getActions

dropTargetGetActions Source #

Arguments

:: (HasCallStack, MonadIO m, IsDropTarget a) 
=> a

self: a DropTarget

-> m [DragAction]

Returns: the actions that this drop target supports

Gets the actions that this drop target supports.

getDrop

dropTargetGetDrop Source #

Arguments

:: (HasCallStack, MonadIO m, IsDropTarget a) 
=> a

self: a DropTarget

-> m (Maybe Drop)

Returns: The current drop

Gets the currently handled drop operation.

If no drop operation is going on, Nothing is returned.

getFormats

dropTargetGetFormats Source #

Arguments

:: (HasCallStack, MonadIO m, IsDropTarget a) 
=> a

self: a DropTarget

-> m (Maybe ContentFormats)

Returns: the supported data formats

Gets the data formats that this drop target accepts.

If the result is Nothing, all formats are expected to be supported.

getGtypes

dropTargetGetGtypes Source #

Arguments

:: (HasCallStack, MonadIO m, IsDropTarget a) 
=> a

self: a DropTarget

-> m (Maybe [GType])

Returns: G_TYPE_INVALID-terminated array of types included in formats or Nothing if none.

Gets the list of supported GTypes for self. If no type have been set, Nothing will be returned.

getPreload

dropTargetGetPreload Source #

Arguments

:: (HasCallStack, MonadIO m, IsDropTarget a) 
=> a

self: a DropTarget

-> m Bool

Returns: True if drop data should be preloaded

Gets the value of the GtkDropTarget:preload property.

getValue

dropTargetGetValue Source #

Arguments

:: (HasCallStack, MonadIO m, IsDropTarget a) 
=> a

self: a DropTarget

-> m (Maybe GValue)

Returns: The current drop data

Gets the value of the GtkDropTarget:value porperty.

new

dropTargetNew Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> GType

type: The supported type or G_TYPE_INVALID

-> [DragAction]

actions: the supported actions

-> m DropTarget

Returns: the new DropTarget

Creates a new DropTarget object.

If the drop target should support more than 1 type, pass G_TYPE_INVALID for type and then call dropTargetSetGtypes.

reject

dropTargetReject Source #

Arguments

:: (HasCallStack, MonadIO m, IsDropTarget a) 
=> a

self: a DropTarget

-> m () 

Rejects the ongoing drop operation.

If no drop operation is ongoing - when GdkDropTarget:drop returns Nothing - this function does nothing.

This function should be used when delaying the decision on whether to accept a drag or not until after reading the data.

setActions

dropTargetSetActions Source #

Arguments

:: (HasCallStack, MonadIO m, IsDropTarget a) 
=> a

self: a DropTarget

-> [DragAction]

actions: the supported actions

-> m () 

Sets the actions that this drop target supports.

setGtypes

dropTargetSetGtypes Source #

Arguments

:: (HasCallStack, MonadIO m, IsDropTarget a) 
=> a

self: a DropTarget

-> Maybe [GType]

types: all supported GTypes that can be dropped

-> m () 

Sets the supported GTypes for this drop target.

The GtkDropTarget[drop](#g:signal:drop) signal will

setPreload

dropTargetSetPreload Source #

Arguments

:: (HasCallStack, MonadIO m, IsDropTarget a) 
=> a

self: a DropTarget

-> Bool

preload: True to preload drop data

-> m () 

Sets the GtkDropTarget:preload property.

Properties

actions

The GdkDragActions that this drop target supports

constructDropTargetActions :: (IsDropTarget o, MonadIO m) => [DragAction] -> m (GValueConstruct o) Source #

Construct a GValueConstruct with valid value for the “actions” property. This is rarely needed directly, but it is used by new.

getDropTargetActions :: (MonadIO m, IsDropTarget o) => o -> m [DragAction] Source #

Get the value of the “actions” property. When overloading is enabled, this is equivalent to

get dropTarget #actions

setDropTargetActions :: (MonadIO m, IsDropTarget o) => o -> [DragAction] -> m () Source #

Set the value of the “actions” property. When overloading is enabled, this is equivalent to

set dropTarget [ #actions := value ]

drop

The Drop that is currently being performed

getDropTargetDrop :: (MonadIO m, IsDropTarget o) => o -> m (Maybe Drop) Source #

Get the value of the “drop” property. When overloading is enabled, this is equivalent to

get dropTarget #drop

formats

The ContentFormats that determine the supported data formats

getDropTargetFormats :: (MonadIO m, IsDropTarget o) => o -> m (Maybe ContentFormats) Source #

Get the value of the “formats” property. When overloading is enabled, this is equivalent to

get dropTarget #formats

preload

Whether the drop data should be preloaded when the pointer is only hovering over the widget but has not been released.

Setting this property allows finer grained reaction to an ongoing drop at the cost of loading more data.

The default value for this property is False to avoid downloading huge amounts of data by accident. For example, if somebody drags a full document of gigabytes of text from a text editor across a widget with a preloading drop target, this data will be downloaded, even if the data is ultimately dropped elsewhere.

For a lot of data formats, the amount of data is very small (like GDK_TYPE_RGBA), so enabling this property does not hurt at all. And for local-only drag'n'drop operations, no data transfer is done, so enabling it there is free.

constructDropTargetPreload :: (IsDropTarget o, MonadIO m) => Bool -> m (GValueConstruct o) Source #

Construct a GValueConstruct with valid value for the “preload” property. This is rarely needed directly, but it is used by new.

getDropTargetPreload :: (MonadIO m, IsDropTarget o) => o -> m Bool Source #

Get the value of the “preload” property. When overloading is enabled, this is equivalent to

get dropTarget #preload

setDropTargetPreload :: (MonadIO m, IsDropTarget o) => o -> Bool -> m () Source #

Set the value of the “preload” property. When overloading is enabled, this is equivalent to

set dropTarget [ #preload := value ]

value

The value for this drop operation or Nothing if the data has not been loaded yet or no drop operation is going on.

Data may be available before the GtkDropTarget[drop](#g:signal:drop) signal gets emitted - for example when the GtkDropTarget:preload property is set. You can use the GObject[notify](#g:signal:notify) signal to be notified of available data.

getDropTargetValue :: (MonadIO m, IsDropTarget o) => o -> m (Maybe GValue) Source #

Get the value of the “value” property. When overloading is enabled, this is equivalent to

get dropTarget #value

Signals

accept

type C_DropTargetAcceptCallback = Ptr () -> Ptr Drop -> Ptr () -> IO CInt Source #

Type for the callback on the (unwrapped) C side.

type DropTargetAcceptCallback Source #

Arguments

 = Drop

drop: the Drop

-> IO Bool

Returns: True if drop is accepted

The accept signal is emitted on the drop site when a drop operation is about to begin. If the drop is not accepted, False will be returned and the drop target will ignore the drop. If True is returned, the drop is accepted for now but may be rejected later via a call to dropTargetReject or ultimately by returning False from GtkDropTarget[drop](#g:signal:drop)

The default handler for this signal decides whether to accept the drop based on the formats provided by the drop.

If the decision whether the drop will be accepted or rejected needs inspecting the data, this function should return True, the GtkDropTarget:preload property should be set and the value should be inspected via the GObject[notify](#g:signal:notify):value signal and then call dropTargetReject.

afterDropTargetAccept :: (IsDropTarget a, MonadIO m) => a -> DropTargetAcceptCallback -> m SignalHandlerId Source #

Connect a signal handler for the accept signal, to be run after the default handler. When overloading is enabled, this is equivalent to

after dropTarget #accept callback

onDropTargetAccept :: (IsDropTarget a, MonadIO m) => a -> DropTargetAcceptCallback -> m SignalHandlerId Source #

Connect a signal handler for the accept signal, to be run before the default handler. When overloading is enabled, this is equivalent to

on dropTarget #accept callback

drop

type C_DropTargetDropCallback = Ptr () -> Ptr GValue -> CDouble -> CDouble -> Ptr () -> IO CInt Source #

Type for the callback on the (unwrapped) C side.

type DropTargetDropCallback Source #

Arguments

 = GValue

value: the Value being dropped

-> Double

x: the x coordinate of the current pointer position

-> Double

y: the y coordinate of the current pointer position

-> IO Bool

Returns: whether the drop was accepted at the given pointer position

The drop signal is emitted on the drop site when the user drops the data onto the widget. The signal handler must determine whether the pointer position is in a drop zone or not. If it is not in a drop zone, it returns False and no further processing is necessary.

Otherwise, the handler returns True. In this case, this handler will accept the drop. The handler is responsible for rading the given value and performing the drop operation.

afterDropTargetDrop :: (IsDropTarget a, MonadIO m) => a -> DropTargetDropCallback -> m SignalHandlerId Source #

Connect a signal handler for the drop signal, to be run after the default handler. When overloading is enabled, this is equivalent to

after dropTarget #drop callback

onDropTargetDrop :: (IsDropTarget a, MonadIO m) => a -> DropTargetDropCallback -> m SignalHandlerId Source #

Connect a signal handler for the drop signal, to be run before the default handler. When overloading is enabled, this is equivalent to

on dropTarget #drop callback

enter

type C_DropTargetEnterCallback = Ptr () -> CDouble -> CDouble -> Ptr () -> IO CUInt Source #

Type for the callback on the (unwrapped) C side.

type DropTargetEnterCallback Source #

Arguments

 = Double

x: the x coordinate of the current pointer position

-> Double

y: the y coordinate of the current pointer position

-> IO [DragAction]

Returns: Preferred action for this drag operation or 0 if dropping is not supported at the current x,y location.

The enter signal is emitted on the drop site when the pointer enters the widget. It can be used to set up custom highlighting.

afterDropTargetEnter :: (IsDropTarget a, MonadIO m) => a -> DropTargetEnterCallback -> m SignalHandlerId Source #

Connect a signal handler for the enter signal, to be run after the default handler. When overloading is enabled, this is equivalent to

after dropTarget #enter callback

onDropTargetEnter :: (IsDropTarget a, MonadIO m) => a -> DropTargetEnterCallback -> m SignalHandlerId Source #

Connect a signal handler for the enter signal, to be run before the default handler. When overloading is enabled, this is equivalent to

on dropTarget #enter callback

leave

type C_DropTargetLeaveCallback = Ptr () -> Ptr () -> IO () Source #

Type for the callback on the (unwrapped) C side.

type DropTargetLeaveCallback = IO () Source #

The leave signal is emitted on the drop site when the pointer leaves the widget. Its main purpose it to undo things done in enter.

afterDropTargetLeave :: (IsDropTarget a, MonadIO m) => a -> DropTargetLeaveCallback -> m SignalHandlerId Source #

Connect a signal handler for the leave signal, to be run after the default handler. When overloading is enabled, this is equivalent to

after dropTarget #leave callback

onDropTargetLeave :: (IsDropTarget a, MonadIO m) => a -> DropTargetLeaveCallback -> m SignalHandlerId Source #

Connect a signal handler for the leave signal, to be run before the default handler. When overloading is enabled, this is equivalent to

on dropTarget #leave callback

motion

type C_DropTargetMotionCallback = Ptr () -> CDouble -> CDouble -> Ptr () -> IO CUInt Source #

Type for the callback on the (unwrapped) C side.

type DropTargetMotionCallback Source #

Arguments

 = Double

x: the x coordinate of the current pointer position

-> Double

y: the y coordinate of the current pointer position

-> IO [DragAction]

Returns: Preferred action for this drag operation or 0 if dropping is not supported at the current x,y location.

The motion signal is emitted while the pointer is moving over the drop target.

afterDropTargetMotion :: (IsDropTarget a, MonadIO m) => a -> DropTargetMotionCallback -> m SignalHandlerId Source #

Connect a signal handler for the motion signal, to be run after the default handler. When overloading is enabled, this is equivalent to

after dropTarget #motion callback

onDropTargetMotion :: (IsDropTarget a, MonadIO m) => a -> DropTargetMotionCallback -> m SignalHandlerId Source #

Connect a signal handler for the motion signal, to be run before the default handler. When overloading is enabled, this is equivalent to

on dropTarget #motion callback