XmDropSite(library call) XmDropSite(library call)
NAME
XmDropSite -- The DropSite Registry
SYNOPSIS
#include <Xm/DragDrop.h>
DESCRIPTION
A client registers a widget or gadget as a drop site using the
XmDropSiteRegister function. In addition, this routine defines the
behavior and capabilities of a drop site by specifying appropriate
resources. For example, the
XmNimportTargets and
XmNnumImportTargets resources identify respectively the selection target types and number
of types supported by a drop site. The visual animation effects
associated with a drop site are also described with DropSite
resources.
Drop site animation effects that occur in response to the pointer
entering a valid drop site are called drag-under effects. A receiver
can select from several animation styles supplied by the toolkit or
can provide customized animation effects. Drag-under effects supplied
by the toolkit include border highlighting, shadow in/out drawing,
and pixmap representation.
When a preregister drag protocol style is used, the toolkit generates
drag-under visual effects based on the value of the
XmNanimationStyle resource. In dynamic mode, if the drop site
XmNdragProc resource is
NULL, the toolkit also provides animation effects based on the
XmNanimationStyle resource. Otherwise, if the
XmNdragProc routine is
specified, the receiver can either assume responsibility for
animation effects (through the
XmNdragProc routine) or rely on the
toolkit to provide animation. An application can either handle all
or none of the animation effects for a particular drop site. That
is, an application should never do a partial job of animation on a
particular drop site.
Drop sites may overlap. The initial stacking order corresponds to the
order in which the drop sites were registered. When a drop site
overlaps another drop site, the drag-under effects of the drop site
underneath are clipped by the obscuring drop site(s).
The
XmDropSiteUpdate routine sets resources for a widget that is
registered as a drop site.
XmDropSiteRetrieve gets drop site resource
values previously specified for a registered widget. These routines
are used instead of
XtSetValues and
XtGetValues.
Classes
XmDropSite does not inherit from any widget class.
New Resources
The following table defines a set of widget resources used by the
programmer to specify data. To reference a resource by name or by
class in a
.Xdefaults file, remove the
XmN or
XmC prefix and use the
remaining letters. To specify one of the defined values for a
resource in a
.Xdefaults file, remove the
Xm prefix and use the
remaining letters (in either lowercase or uppercase, but include any
underscores between words). The codes in the access column indicate
if the given resource can be set at creation time (C), set by using
XmDropSiteUpdate (S), retrieved by using
XmDropSiteRetrieve (G), or
is not applicable (N/A).
+--------------------------------------------------------------------------------------------------------+
|
XmDropSite Resource Set |
|
Name |
Class |
Type |
Default |
Access |
+------------------------+-------------------------+----------------+---------------------------+--------+
|XmNanimationMask | XmCAnimationMask | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
+------------------------+-------------------------+----------------+---------------------------+--------+
|XmNanimationPixmap | XmCAnimationPixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
+------------------------+-------------------------+----------------+---------------------------+--------+
|XmNanimationPixmapDepth | XmCAnimationPixmapDepth | int | 0 | CSG |
+------------------------+-------------------------+----------------+---------------------------+--------+
|XmNanimationStyle | XmCAnimationStyle | unsigned char | XmDRAG_UNDER_HIGHLIGHT | CSG |
+------------------------+-------------------------+----------------+---------------------------+--------+
|XmNdragProc | XmCDragProc | XtCallbackProc | NULL | CSG |
+------------------------+-------------------------+----------------+---------------------------+--------+
|XmNdropProc | XmCDropProc | XtCallbackProc | NULL | CSG |
+------------------------+-------------------------+----------------+---------------------------+--------+
|XmNdropRectangles | XmCDropRectangles | XRectangle * | dynamic | CSG |
+------------------------+-------------------------+----------------+---------------------------+--------+
|XmNdropSiteActivity | XmCDropSiteActivity | unsigned char | XmDROP_SITE_ACTIVE | CSG |
+------------------------+-------------------------+----------------+---------------------------+--------+
|XmNdropSiteOperations | XmCDropSiteOperations | unsigned char | XmDROP_MOVE | XmDROP_COPY | CSG |
+------------------------+-------------------------+----------------+---------------------------+--------+
|XmNdropSiteType | XmCDropSiteType | unsigned char | XmDROP_SITE_SIMPLE | CG |
+------------------------+-------------------------+----------------+---------------------------+--------+
|XmNimportTargets | XmCImportTargets | Atom * | NULL | CSG |
+------------------------+-------------------------+----------------+---------------------------+--------+
|XmNnumDropRectangles | XmCNumDropRectangles | Cardinal | 1 | CSG |
+------------------------+-------------------------+----------------+---------------------------+--------+
|XmNnumImportTargets | XmCNumImportTargets | Cardinal | 0 | CSG |
+------------------------+-------------------------+----------------+---------------------------+--------+
+------------------------+-------------------------+----------------+---------------------------+--------+
XmNanimationMask Specifies a mask to use with the pixmap specified by
XmNanimationPixmap when the animation style is
XmDRAG_UNDER_PIXMAP.
XmNanimationPixmap Specifies a pixmap for drag-under animation when the
animation style is
XmDRAG_UNDER_PIXMAP. The pixmap is drawn
with its origin at the upper left corner of the bounding
box of the drop site. If the drop site window is larger
than the animation pixmap, the portion of the window not
covered by the pixmap will be tiled with the window's
background color.
XmNanimationPixmapDepth Specifies the depth of the pixmap specified by the
XmNanimationPixmap resource. When the depth is 1, the
colors are taken from the foreground and background of the
drop site widget. For any other value, drop site animation
occurs only if the
XmNanimationPixmapDepth matches the
depth of the drop site window. Colors are derived from the
current colormap.
XmNanimationStyle Specifies the drag-under animation style used when a drag
enters a valid drop site. The possible values are
XmDRAG_UNDER_HIGHLIGHT The drop site uses highlighting effects.
XmDRAG_UNDER_SHADOW_OUT The drop site uses an outset shadow.
XmDRAG_UNDER_SHADOW_IN The drop site uses an inset shadow.
XmDRAG_UNDER_PIXMAP The drop site uses the pixmap specified by
XmNanimationPixmap to indicate that it can
receive the drop.
XmDRAG_UNDER_NONE The drop site does not use animation effects. A
client using a dynamic protocol, may provide
drag-under effects in its
XmNdragProc routine.
XmNdragProc Specifies the procedure that is invoked when the drop site
receives a crossing, motion, or operation changed message.
This procedure is called only when a dynamic protocol is
used. The type of structure whose address is passed to
this procedure is
XmDragProcCallbackStruct. The reason
sent to the procedure is one of the following:
+o
XmCR_DROP_SITE_ENTER_MESSAGE +o
XmCR_DROP_SITE_LEAVE_MESSAGE +o
XmCR_DRAG_MOTION +o
XmCR_OPERATION_CHANGED The drag procedure may change the values of some members of
the
XmDragProcCallbackStruct passed to it. After the drag
procedure returns, the toolkit uses the final values in
initializing some members of the callback structure passed
to the appropriate callbacks of the initiator (the
DragContext's
XmNdropSiteEnterCallback,
XmNdropSiteLeaveCallback,
XmNdragMotionCallback, or
XmNoperationChangedCallback callbacks).
XmNdropProc Specifies the procedure that is invoked when a drop
(excluding a cancel or interrupt action) occurs on a drop
site regardless of the status of the drop site. The type of
the structure whose address is passed to this procedure is
XmDropProcCallbackStruct. The reason sent to the procedure
is
XmCR_DROP_MESSAGE.
The drop procedure may change the values of some members of
the
XmDropProcCallbackStruct passed to it. After the drop
procedure returns, the toolkit uses the final values in
initializing some members of the
XmDropStartCallbackStruct passed to the initiator's drop start callbacks (the
DragContext's
XmNdropStartCallback callbacks).
XmNdropRectangles Specifies a list of rectangles that describe the shape of a
drop site. The locations of the rectangles are relative to
the origin of the enclosing object. When
XmNdropRectangles is NULL, the drop site is assumed to be the sensitive area
of the enclosing widget. If
XmNdropSiteType is
XmDROP_SITE_COMPOSITE, this resource cannot be specified by
the application.
Retrieving this resource returns allocated memory that
needs to be freed with the
XtFree function.
XmNdropSiteActivity Indicates whether a drop site is active or inactive. The
values are
XmDROP_SITE_ACTIVE,
XmDROP_SITE_INACTIVE, and
XmDROP_SITE_IGNORE. An active drop site can receive a
drop, whereas an inactive drop site is dormant. An inactive
drop site is treated as if it was not a registered drop
site and any drag-under visuals associated with entering or
leaving the drop site do not occur. However, it is still
used for clipping drag-under effects. A value of
XmDROP_SITE_IGNORE indicates that a drop site should be
ignored for all purposes.
XmNdropSiteOperations Specifies the set of valid operations associated with a
drop site. This resource is a bit mask that is formed by
combining one or more of the following values using a
bitwise operation such as inclusive OR (|):
XmDROP_COPY,
XmDROP_LINK, and
XmDROP_MOVE. The value
XmDROP_NOOP for
this resource indicates that no operations are valid.
XmNdropSiteType Specifies the type of the drop site. The possible values
are
XmDROP_SITE_SIMPLE The widget does not have any additional children
that are registered as drop sites.
XmDROP_SITE_COMPOSITE The widget will have children that are registered
as drop sites.
XmNimportTargets Specifies the list of target atoms that this drop site
accepts.
XmNnumDropRectangles Specifies the number of rectangles in the
XmNdropRectangles list. If the drop site type is
XmDROP_SITE_COMPOSITE, this
resource can not be specified by the application.
XmNnumImportTargets Specifies the number of atoms in the target atom list.
Callback Information
A pointer to the following structure is passed to the
XmNdragProc routine when the drop site receives crossing, motion, or operation
changed messages:
typedef struct
{
int
reason;
XEvent *
event;
Time
timeStamp;
Widget
dragContext;
Position
x;
Position
y;
unsigned char
dropSiteStatus;
unsigned char
operation;
unsigned char
operations;
Boolean
animate;
} XmDragProcCallbackStruct, *XmDragProcCallback;
reason Indicates why the callback was invoked.
event Points to the
XEvent that triggered the callback.
timeStamp Specifies the timestamp of the logical event.
dragContext Specifies the ID of the DragContext widget associated with
the transaction.
x Indicates the x-coordinate of the pointer relative to the
drop site.
y Indicates the y-coordinate of the pointer relative to the
drop site.
dropSiteStatus An IN/OUT member that indicates whether or not a drop site
is valid.
When
reason is
XmCR_DROP_SITE_ENTER_MESSAGE or
XmCR_OPERATION_CHANGED, or
reason is
XmCR_DRAG_MOTION or
XmCR_DROP_SITE_LEAVE_MESSAGE and the pointer is not in the
same drop site as on the previous invocation of the drag
procedure, the toolkit initializes
dropSiteStatus to
XmDROP_SITE_VALID if the DragContext's
XmNexportTargets and
the DropSite's
XmNimportTargets are compatible and if the
initial value of the
operation member is not
XmDROP_NOOP.
Otherwise, the toolkit initializes
dropSiteStatus to
XmDROP_SITE_INVALID.
When the
reason is
XmCR_DRAG_MOTION or
XmCR_DROP_SITE_LEAVE_MESSAGE and the pointer is within the
same drop site as on the previous invocation of the drag
procedure, the toolkit initializes
dropSiteStatus to the
value of
dropSiteStatus at the time the previous invocation
of the drag procedure returns.
The drag procedure may change the value of this member.
After the drag procedure returns, the toolkit uses the
final value in initializing the
dropSiteStatus member of
the callback struct passed to the appropriate callbacks of
the initiator.
operation An IN/OUT member that identifies an operation.
The toolkit initializes
operation by selecting an operation
from the bitwise AND of the initial value of the
operations member and the value of the DropSite's
XmNdropSiteOperations resource. The toolkit searches this
set first for
XmDROP_MOVE, then for
XmDROP_COPY, then for
XmDROP_LINK, and initializes
operation to the first
operation it finds in the set. If the toolkit finds none
of these operations in the set, it initializes
operation to
XmDROP_NOOP.
The drag procedure may change the value of this member.
After the drag procedure returns, the toolkit uses the
final value in initializing the
operation member of the
callback struct passed to the appropriate callbacks of the
initiator.
operations An IN/OUT member that indicates the set of operations
supported for the source data.
If the user does not select an operation (by pressing a
modifier key), the toolkit initializes
operations to the
value of the DragContext's
XmNdragOperations resource. If
the user does select an operation, the toolkit initializes
operations to the bitwise AND of the corresponding
operation and the value of the DragContext's
XmNdragOperations resource. If the resulting set of
operations is empty, the toolkit initializes
operations to
XmDROP_NOOP.
The drag procedure may change the value of this member.
After the drag procedure returns, the toolkit uses the
final value in initializing the
operations member of the
callback struct passed to the appropriate callbacks of the
initiator.
animate An OUT member that indicates whether the toolkit or the
receiver client provides drag-under effects for a valid
drop site. If
animate is set to True, the toolkit provides
drop site animation per the
XmNanimationStyle resource
value; if it is set to False, the receiver generates drag-
under animation effects.
A pointer to the following structure is passed to the
XmNdropProc routine when the drop site receives a drop message:
typedef struct
{
int
reason;
XEvent *
event;
Time
timeStamp;
Widget
dragContext;
Position
x;
Position
y;
unsigned char
dropSiteStatus;
unsigned char
operation;
unsigned char
operations;
unsigned char
dropAction;
} XmDropProcCallbackStruct, *XmDropProcCallback;
reason Indicates why the callback was invoked.
event Specifies the
XEvent that triggered the callback.
timeStamp Specifies the timestamp of the logical event.
dragContext Specifies the ID of the DragContext widget associated with
the transaction.
x Indicates the x-coordinate of the pointer relative to the
drop site.
y Indicates the y-coordinate of the pointer relative to the
drop site.
dropSiteStatus An IN/OUT member that indicates whether or not a drop site
is valid.
The toolkit initializes
dropSiteStatus to
XmDROP_SITE_VALID if the DragContext's
XmNexportTargets and the DropSite's
XmNimportTargets are compatible and if the initial value of
the
operation member is not
XmDROP_NOOP. Otherwise, the
toolkit initializes
dropSiteStatus to
XmDROP_SITE_INVALID.
The drop procedure may change the value of this member.
After the drop procedure returns, the toolkit uses the
final value in initializing the
dropSiteStatus member of
the
XmDropStartCallbackStruct passed to the initiator's
drop start callbacks (the DragContext's
XmNdropStartCallback callbacks).
operation An IN/OUT member that identifies an operation.
The toolkit initializes
operation by selecting an operation
from the bitwise AND of the initial value of the
operations member and the value of the DropSite's
XmNdropSiteOperations resource. The toolkit searches this
set first for
XmDROP_MOVE, then for
XmDROP_COPY, then for
XmDROP_LINK, and initializes
operation to the first
operation it finds in the set. If it finds none of these
operations in the set, it initializes
operation to
XmDROP_NOOP.
The drop procedure may change the value of this member.
After the drop procedure returns, the toolkit uses the
final value in initializing the
operation member of the
XmDropStartCallbackStruct passed to the initiator's drop
start callbacks (the DragContext's
XmNdropStartCallback callbacks).
operations An IN/OUT member that indicates the set of operations
supported for the source data.
If the user does not select an operation (by pressing a
modifier key), the toolkit initializes
operations to the
value of the DragContext's
XmNdragOperations resource. If
the user does select an operation, the toolkit initializes
operations to the bitwise AND of the corresponding
operation and the value of the DragContext's
XmNdragOperations resource. If the resulting set of
operations is empty, the toolkit initializes
operations to
XmDROP_NOOP.
The drop procedure may change the value of this member.
After the drop procedure returns, the toolkit uses the
final value in initializing the
operations member of the
XmDropStartCallbackStruct passed to the initiator's drop
start callbacks (the DragContext's
XmNdropStartCallback callbacks).
dropAction An IN/OUT member that identifies the action associated with
the drop. The possible values are
XmDROP A drop was attempted. If the drop site is valid,
drop transfer handling proceeds.
XmDROP_HELP The user has requested help on the drop site.
The drop procedure may change the value of this member.
After the drop procedure returns, the toolkit uses the
final value in initializing the
dropAction member of the
XmDropStartCallbackStruct passed to the initiator's drop
start callbacks (the DragContext's
XmNdropStartCallback callbacks).
RELATED INFORMATION
XmDragContext(3),
XmDragIcon(3),
XmDropSiteConfigureStackingOrder(3),
XmDropSiteEndUpdate(3),
XmDropSiteQueryStackingOrder(3),
XmDropSiteRegister(3),
XmDropSiteStartUpdate(3),
XmDropSiteUpdate(3),
XmDropSiteUnregister(3),
XmDropTransfer(3), and
XmTargetsAreCompatible(3).
XmDropSite(library call)