XmDropSite — The DropSite Registry
"XmDropSite"
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.
XmDropSite does not inherit from any widget class.
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
- 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:
- •
- XmCR_DROP_SITE_ENTER_MESSAGE
- •
- XmCR_DROP_SITE_LEAVE_MESSAGE
- •
- XmCR_DRAG_MOTION
- •
- 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
- 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.
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).
XmDragContext(3), XmDragIcon(3),
XmDropSiteConfigureStackingOrder(3), XmDropSiteEndUpdate(3),
XmDropSiteQueryStackingOrder(3), XmDropSiteRegister(3),
XmDropSiteStartUpdate(3), XmDropSiteUpdate(3),
XmDropSiteUnregister(3), XmDropTransfer(3), and
XmTargetsAreCompatible(3).