


XmDragContext(3X)					    XmDragContext(3X)
OSF/Motif							    OSF/Motif



NAME
  XXmmDDrraaggCCoonntteexxtt	- The DragContext widget class

SYNOPSIS


  ##iinncclluuddee <<XXmm//DDrraaggDDrroopp..hh>>

DESCRIPTION
  DragContexts are special widgets used	in drag	and drop transactions.	A
  DragContext is implemented as	a widget, but a	client does not	explicitly
  create a DragContext widget.	Instead, a client initiates a drag and drop
  transaction by calling XXmmDDrraaggSSttaarrtt, and this routine initializes and
  returns a DragContext	widget.	 There is a unique DragContext for each	drag
  operation.  The toolkit frees	a DragContext when a transaction is complete;
  therefore, an	application programmer should not explicitly destroy a
  DragContext.

  Initiator and	receiver clients both use DragContexts to track	the state of
  a transaction.  When the initiator and receiver of a transaction are in the
  same client, they share the same DragContext instance.  If they are in dif-
  ferent clients, there	are two	separate DragContexts.	In this	case, the
  initiator calls XXmmDDrraaggSSttaarrtt and the toolkit provides a DragContext for the
  receiver client.  The	only resources pertinent to the	receiver are XXmmNNeexx--
  ppoorrttTTaarrggeettss and XXmmNNnnuummEExxppoorrttTTaarrggeettss.	These can both be passed as arguments
  to the XXmmDDrrooppSSiitteeRReettrriieevvee function to	obtain information about the current
  drop site.

  In general, in order to receive data,	a drop site must share at least	one
  target type and operation in common with a drag source.  The DragContext
  resource, XXmmNNeexxppoorrttTTaarrggeettss, identifies the selection targets for the drag
  source.  These export	targets	are compared with the XXmmNNiimmppoorrttTTaarrggeettss
  resource list	specified by a drop site.  The DragContext resource, XXmmNNddrraa--
  ggOOppeerraattiioonnss, identifies the valid operations that can	be applied to the
  source data by the initiator.	 The drop site counterpart resource is
  XXmmNNddrrooppSSiitteeOOppeerraattiioonnss, which indicates a drop	site's supported operations.

  A client uses	DragIcon widgets to define the drag-over animation effects
  associated with a given drag and drop	transaction. An	initiator specifies a
  set of drag icons, selects a blending	model, and sets	foreground and back-
  ground cursor	colors with DragContext	resources.

  The type of drag-over	visual used to represent a drag	operation depends on
  the drag protocol style.  In preregister mode, the server is grabbed,	and
  either a cursor or a pixmap may be used as a drag-over visual.  In dynamic
  mode,	drag-over visuals must be implemented with the X cursor.  If the
  resulting drag protocol style	is Drop	Only or	None and the XXmmNNddrraaggIInniittiiaa--
  ttoorrPPrroottooccoollSSttyyllee is XXmmDDRRAAGG__DDYYNNAAMMIICC or	XXmmDDRRAAGG__PPRREEFFEERR__DDYYNNAAMMIICC, then a dynamic
  visual style (cursor)	is used.  Otherwise, a preregister visual style	is
  used.


  Classes

  DragContext inherits behavior	and resources from CCoorree.

  The class pointer is xxmmDDrraaggCCoonntteexxttCCllaassss.

  The class name is XXmmDDrraaggCCoonntteexxtt.

  New Resources

  The following	table defines a	set of widget resources	used by	the program-
  mer to specify data.	The programmer can also	set the	resource values	for
  the inherited	classes	to set attributes for this widget.  To reference a
  resource by name or by class in a .Xdefaults file, remove the	XXmmNN or XXmmCC
  prefix and use the remaining letters.	 To specify one	of the defined values
  for a	resource in a .Xdefaults file, remove the XXmm prefix and	use the
  remaining letters (in	either lowercase or uppercase, but include any under-
  scores between words).  The codes in the access column indicate if the
  given	resource can be	set at creation	time (CC), set by using XXttSSeettVVaalluueess
  (SS), retrieved by using XXttGGeettVVaalluueess (GG), or is not applicable	(NN//AA).

			  XXmmDDrraaggCCoonntteexxtt	RReessoouurrccee SSeett
   _________________________________________________________________________
   NNaammee				  DDeeffaauulltt			      AAcccceessss
	 CCllaassss				TTyyppee
   _________________________________________________________________________
   _________________________________________________________________________
   XmNblendModel		  XmBLEND_ALL			      CG
	 XmCBlendModel			 unsigned char
   _________________________________________________________________________
   XmNclientData		  NULL				      CSG
	 XmCClientData			 XtPointer
   _________________________________________________________________________
   XmNconvertProc		  NULL				      CSG
	 XmCConvertProc			 XtConvertSelectionIncrProc
   _________________________________________________________________________
   XmNcursorBackground		  dynamic			      CSG
	 XmCCursorBackground		 Pixel
   _____________________________
   XmNcursorForeground		  dynamic			      CSG
	 XmCCursorForeground		 Pixel
   _________________________________________________________________________
   XmNdragDropFinishCallback	  NULL				      CSG
	 XmCCallback			 XtCallbackList
   _________________________________________________________________________
   XmNdragMotionCallback	  NULL				      C
	 XmCCallback			 XtCallbackList
   _________________________________________________________________________
   XmNdragOperations		  XmDROP_COPY	XmDROP_MOVE	      C
	 XmCDragOperations		 unsigned char
   _________________________________________________________________________
   XmNdropFinishCallback	  NULL				      C
	 XmCCallback			 XtCallbackList
   _________________________________________________________________________
   XmNdropSiteEnterCallback	  NULL				      C
	 XmCCallback			 XtCallbackList
   _________________________________________________________________________
   XmNdropSiteLeaveCallback	  NULL				      C
	 XmCCallback			 XtCallbackList
   _________________________________________________________________________
   XmNdropStartCallback		  NULL				      C
	 XmCCallback			 XtCallbackList
   _________________________________________________________________________
   XmNexportTargets		  NULL				      CSG
	 XmCExportTargets		 Atom *
   _________________________________________________________________________
   XmNincremental		  False				      CSG
	 XmCIncremental			 Boolean
   _________________________________________________________________________
   XmNinvalidCursorForeground	  dynamic			      CSG
	 XmCCursorForeground		 Pixel
   _________________________________________________________________________
   XmNnoneCursorForeground	  dynamic			      CSG
	 XmCCursorForeground		 Pixel
   _________________________________________________________________________
   XmNnumExportTargets		  0				      CSG
	 XmCNumExportTargets		 Cardinal
   _________________________________________________________________________
   XmNoperationChangedCallback	  NULL				      C
	 XmCCallback			 XtCallbackList
   _________________________________________________________________________
   XmNoperationCursorIcon	  dynamic			      CSG
	 XmCOperationCursorIcon		 Widget
   _________________________________________________________________________
   XmNsourceCursorIcon		  dynamic			      CSG
	 XmCSourceCursorIcon		 Widget
   _________________________________________________________________________
   XmNsourcePixmapIcon		  dynamic			      CSG
	 XmCSourcePixmapIcon		 Widget
   _________________________________________________________________________
   XmNstateCursorIcon		  dynamic			      CSG
	 XmCStateCursorIcon		 Widget
   _________________________________________________________________________
   XmNtopLevelEnterCallback	  NULL				      C
	 XmCCallback			 XtCallbackList
   _________________________________________________________________________
   XmNtopLevelLeaveCallback	  NULL				      C
	 XmCCallback			 XtCallbackList
   _________________________________________________________________________
   XmNvalidCursorForeground	  dynamic			      CSG
	 XmCCursorForeground		 Pixel
   _________________________________________________________________________

  XXmmNNbblleennddMMooddeell
	    Specifies which combination	of DragIcons are blended to produce a
	    drag-over visual.

	    XXmmBBLLEENNDD__AALLLL
		      Blends all three DragIcons - the source, state and
		      operation	icon.  The icons are layered from top to bot-
		      tom with the operation icon on top and the source	icon
		      on the bottom.  The hotspot is derived from the state
		      icon.

	    XXmmBBLLEENNDD__SSTTAATTEE__SSOOUURRCCEE
		      Blends the state and source icons	only.  The hotspot is
		      derived from the state icon.

	    XXmmBBLLEENNDD__JJUUSSTT__SSOOUURRCCEE
		      Specifies	that only the source icon is used, which the
		      initiator	updates	as required.

	    XXmmBBLLEENNDD__NNOONNEE
		      Specifies	that no	drag-over visual is generated.	The
		      client tracks the	drop site status through callback
		      routines and updates the drag-over visuals as neces-
		      sary.

  XXmmNNcclliieennttDDaattaa
	    Specifies the client data to be passed to the XXmmNNccoonnvveerrttPPrroocc when
	    it is invoked.

  XXmmNNccoonnvveerrttPPrroocc
	    Specifies a	procedure of type XXttCCoonnvveerrttSSeelleeccttiioonnIInnccrrPPrroocc that
	    converts the source	data to	the format(s) requested	by the
	    receiver client.  The _w_i_d_g_e_t argument passed to this procedure is
	    the	DragContext widget.  The selection atom	passed is
	    _MOTIF_DROP.  If XXmmNNiinnccrreemmeennttaall is False, the procedure should
	    ignore the _m_a_x__l_e_n_g_t_h, _c_l_i_e_n_t__d_a_t_a,	and _r_e_q_u_e_s_t__i_d arguments and
	    should handle the conversion atomically.  Data returned by
	    XXmmNNccoonnvveerrttPPrroocc must	be allocated using XXttMMaalllloocc and	will be	freed
	    automatically by the toolkit after the transfer.  For additional
	    information	on selection conversion	procedures, see	_X _T_o_o_l_k_i_t
	    _I_n_t_r_i_n_s_i_c_s-_C _L_a_n_g_u_a_g_e _I_n_t_e_r_f_a_c_e.

  XXmmNNccuurrssoorrBBaacckkggrroouunndd
	    Specifies the background pixel value of the	cursor.

  XXmmNNccuurrssoorrFFoorreeggrroouunndd
	    Specifies the foreground pixel value of the	cursor when the	state
	    icon is not	blended.  This resource	defaults to the	foreground
	    color of the widget	passed to the XXmmDDrraaggSSttaarrtt function.

  XXmmNNddrraaggDDrrooppFFiinniisshhCCaallllbbaacckk
	    Specifies the list of callbacks that are called when the transac-
	    tion is completed.	The type of the	structure whose	address	is
	    passed to this callback is XXmmDDrraaggDDrrooppFFiinniisshhCCaallllbbaacckkSSttrruucctt.	The
	    reason sent	by the callback	is XXmmCCRR__DDRRAAGG__DDRROOPP__FFIINNIISSHH.

  XXmmNNddrraaggMMoottiioonnCCaallllbbaacckk
	    Specifies the list of callbacks that are invoked when the pointer
	    moves.  The	type of	structure whose	address	is passed to this
	    callback is	XXmmDDrraaggMMoottiioonnCCaallllbbaacckkSSttrruucctt.   The reason sent by the
	    callback is	XXmmCCRR__DDRRAAGG__MMOOTTIIOONN.

  XXmmNNddrraaggOOppeerraattiioonnss
	    Specifies the set of valid operations associated with an initia-
	    tor	client for a drag transaction.	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 (|):	XXmmDDRROOPP__CCOOPPYY,
	    XXmmDDRROOPP__LLIINNKK, XXmmDDRROOPP__MMOOVVEE.  The value XXmmDDRROOPP__NNOOOOPP for this
	    resource indicates that no operations are valid.  For Text and
	    TextField widgets, this resource is	set to XXmmDDRROOPP__CCOOPPYY |
	    XXmmDDRROOPP__MMOOVVEE; for List widgets, it is set to	XXmmDDRROOPP__CCOOPPYY.

  XXmmNNddrrooppFFiinniisshhCCaallllbbaacckk
	    Specifies the list of callbacks that are invoked when the drop is
	    completed.	 The type of the structure whose address is passed to
	    this callback is XXmmDDrrooppFFiinniisshhCCaallllbbaacckkSSttrruucctt.   The reason sent by
	    the	callback is XXmmCCRR__DDRROOPP__FFIINNIISSHH.

  XXmmNNddrrooppSSiitteeEEnntteerrCCaallllbbaacckk
	    Specifies the list of callbacks that are invoked when the pointer
	    enters a drop site.	 The type of the structure whose address is
	    passed to this callback is XXmmDDrrooppSSiitteeEEnntteerrCCaallllbbaacckkSSttrruucctt.  The
	    reason sent	by the callback	is XXmmCCRR__DDRROOPP__SSIITTEE__EENNTTEERR.

  XXmmNNddrrooppSSiitteeLLeeaavveeCCaallllbbaacckk
	    Specifies the list of callbacks that are invoked when the pointer
	    leaves a drop site.	 The type of the structure whose address is
	    passed to this callback is XXmmDDrrooppSSiitteeLLeeaavveeCCaallllbbaacckkSSttrruucctt.  The
	    reason sent	by the callback	is XXmmCCRR__DDRROOPP__SSIITTEE__LLEEAAVVEE.

  XXmmNNddrrooppSSttaarrttCCaallllbbaacckk
	    Specifies the list of callbacks that are invoked when a drop is
	    initiated.	The type of the	structure whose	address	is passed to
	    this callback is XXmmDDrrooppSSttaarrttCCaallllbbaacckkSSttrruucctt.	 The reason sent by
	    the	callback is XXmmCCRR__DDRROOPP__SSTTAARRTT.

  XXmmNNeexxppoorrttTTaarrggeettss
	    Specifies the list of target atoms associated with this source.
	    This resource identifies the selection targets this	source can be
	    converted to.

  XXmmNNiinnccrreemmeennttaall
	    Specifies a	Boolean	value that indicates whether the transfer on
	    the	initiator side uses the	Xt incremental selection transfer
	    mechanism described	in _X _T_o_o_l_k_i_t _I_n_t_r_i_n_s_i_c_s-_C _L_a_n_g_u_a_g_e _I_n_t_e_r_f_a_c_e.
	    If the value is True, the initiator	uses incremental transfer; if
	    the	value is False,	the initiator uses atomic transfer.

  XXmmNNiinnvvaalliiddCCuurrssoorrFFoorreeggrroouunndd
	    Specifies the foreground pixel value of the	cursor when the	state
	    is invalid.	 This resource defaults	to the value of	the XXmmNNccuurr--
	    ssoorrFFoorreeggrroouunndd resource.

  XXmmNNnnoonneeCCuurrssoorrFFoorreeggrroouunndd
	    Specifies the foreground pixel value of the	cursor when the	state
	    is none.  This resource defaults to	the value of the XXmmNNccuurrssoorr--
	    FFoorreeggrroouunndd resource.

  XXmmNNnnuummEExxppoorrttTTaarrggeettss
	    Specifies the number of entries in the list	of export targets.

  XXmmNNooppeerraattiioonnCChhaannggeeddCCaallllbbaacckk
	    Specifies the list of callbacks that are invoked when the drag is
	    started and	when the user requests that a different	operation be
	    applied to the drop.  The type of the structure whose address is
	    passed to this callback is XXmmOOppeerraattiioonnCChhaannggeeddCCaallllbbaacckkSSttrruucctt.  The
	    reason sent	by the callback	is XXmmCCRR__OOPPEERRAATTIIOONN__CCHHAANNGGEEDD.

  XXmmNNooppeerraattiioonnCCuurrssoorrIIccoonn
	    Specifies the cursor icon used to designate	the type of operation
	    performed by the drag transaction.	If  NULL, XXmmSSccrreeeenn resources
	    provide default icons for copy, link, and move operations.

  XXmmNNssoouurrcceeCCuurrssoorrIIccoonn
	    Specifies the cursor icon used to represent	the source when	a
	    dynamic visual style is used.  If NULL, the	XXmmNNddeeffaauullttSSoouurrcceeCCuurr--
	    ssoorrIIccoonn resource of	XXmmSSccrreeeenn provides a default cursor icon.

  XXmmNNssoouurrcceePPiixxmmaappIIccoonn
	    Specifies the pixmap icon used to represent	the source when	a
	    preregister	visual style is	used.  The icon	is used	in conjunc-
	    tion with the colormap of the widget passed	to XXmmDDrraaggSSttaarrtt.	 If
	    NULL, XXmmNNssoouurrcceeCCuurrssoorrIIccoonn is used.

  XXmmNNssttaatteeCCuurrssoorrIIccoonn
	    Specifies the cursor icon used to designate	the state of a drop
	    site.  If NULL, XXmmSSccrreeeenn resources provide default icons for a
	    valid, invalid, and	no drop	site condition.

  XXmmNNttooppLLeevveellEEnntteerrCCaallllbbaacckk
	    Specifies the list of callbacks that are called when the pointer
	    enters a top-level window or root window (due to changing
	    screens).  The type	of the structure whose address is passed to
	    this callback is XXmmTTooppLLeevveellEEnntteerrCCaallllbbaacckkSSttrruucctt.  The reason	sent
	    by the callback is XXmmCCRR__TTOOPP__LLEEVVEELL__EENNTTEERR.

  XXmmNNttooppLLeevveellLLeeaavveeCCaallllbbaacckk
	    Specifies the list of callbacks that are called when the pointer
	    leaves a top level window or the root window (due to changing
	    screens).  The type	of the structure whose address is passed to
	    this callback is XXmmTTooppLLeevveellLLeeaavveeCCaallllbbaacckkSSttrruucctt.  The reason	sent
	    by the callback is XXmmCCRR__TTOOPP__LLEEVVEELL__LLEEAAVVEE.

  XXmmNNvvaalliiddCCuurrssoorrFFoorreeggrroouunndd
	    Specifies the foreground pixel value of the	cursor designated as
	    a valid cursor icon.

  Inherited Resources

  DragContext inherits behavior	and resources from the following superclass.
  For a	complete description of	each resource, refer to	the CCoorree man page.

			      CCoorree RReessoouurrccee SSeett
     ____________________________________________________________________
     NNaammee				   DDeeffaauulltt		   AAcccceessss
	   CCllaassss				 TTyyppee
     ____________________________________________________________________
     ____________________________________________________________________
     XmNaccelerators			   dynamic		   CSG
	   XmCAccelerators			  XtAccelerators
     ____________________________________________________________________
     XmNancestorSensitive		   dynamic		   G
	   XmCSensitive				  Boolean
     ____________________________________________________________________
     XmNbackground			   dynamic		   CSG
	   XmCBackground			  Pixel
     ____________________________________________________________________
     XmNbackgroundPixmap		   XmUNSPECIFIED_PIXMAP	   CSG
	   XmCPixmap				  Pixmap
     ____________________________________________________________________
     XmNborderColor			   XtDefaultForeground	   CSG
	   XmCBorderColor			  Pixel
     ____________________________________________________________________
     XmNborderPixmap			   XmUNSPECIFIED_PIXMAP	   CSG
	   XmCPixmap				  Pixmap
     ____________________________________________________________________
     XmNborderWidth			   0			   CSG
	   XmCBorderWidth			  Dimension
     ____________________________________________________________________
     XmNcolormap			   dynamic		   CG
	   XmCColormap				  Colormap
     ____________________________________________________________________
     XmNdepth				   dynamic		   CG
	   XmCDepth				  int
     ____________________________________________________________________
     XmNdestroyCallback			   NULL			   C
	   XmCCallback				  XtCallbackList
     ____________________________________________________________________
     XmNheight				   dynamic		   CSG
	   XmCHeight				  Dimension
     ____________________________________________________________________
     XmNinitialResourcesPersistent	   True			   C
	   XmCInitialResourcesPersistent	  Boolean
     ____________________________________________________________________
     XmNmappedWhenManaged		   True			   CSG
	   XmCMappedWhenManaged			  Boolean
     ____________________________________________________________________
     XmNscreen				   dynamic		   CG
	   XmCScreen				  Screen *
     ____________________________________________________________________
     XmNsensitive			   True			   CSG
	   XmCSensitive				  Boolean
     ____________________________________________________________________
     XmNtranslations			   dynamic		   CSG
	   XmCTranslations			  XtTranslations
     ____________________________________________________________________
     XmNwidth				   dynamic		   CSG
	   XmCWidth				  Dimension
     ____________________________________________________________________
     XmNx				   0			   CSG
	   XmCPosition				  Position
     ____________________________________________________________________
     XmNy				   0			   CSG
	   XmCPosition				  Position
     ____________________________________________________________________

  Callback Information

  Each of the DragContext callbacks has	an associated callback structure.

  A pointer to the following structure is passed to the	XXmmNNddrraaggDDrrooppFFiinniisshh--
  CCaallllbbaacckk callback.


  ttyyppeeddeeff ssttrruucctt
  {{
    iinntt		 _r_e_a_s_o_n;;
    XXEEvveenntt	 **_e_v_e_n_t;;
    TTiimmee	 _t_i_m_e_S_t_a_m_p;;
  }}XXmmDDrraaggDDrrooppFFiinniisshhCCaallllbbaacckkSSttrruucctt,, **XXmmDDrraaggDDrrooppFFiinniisshhCCaallllbbaacckk;;

  _r_e_a_s_o_n      Indicates	why the	callback was invoked.

  _e_v_e_n_t	      Points to	the XXEEvveenntt that	triggered the callback.

  _t_i_m_e_s_t_a_m_p   Specifies	the time at which either the drag or the drop was
	      completed.

  A pointer to the following structure is passed to callbacks for XXmmNNddrraaggMMoo--
  ttiioonnCCaallllbbaacckk.


  ttyyppeeddeeff ssttrruucctt
  {{
    iinntt		 _r_e_a_s_o_n;;
    XXEEvveenntt	 **_e_v_e_n_t;;
    TTiimmee	 _t_i_m_e_S_t_a_m_p;;
    uunnssiiggnneedd cchhaarr_o_p_e_r_a_t_i_o_n;;
    uunnssiiggnneedd cchhaarr_o_p_e_r_a_t_i_o_n_s;;
    uunnssiiggnneedd cchhaarr_d_r_o_p_S_i_t_e_S_t_a_t_u_s;;
    PPoossiittiioonn	 _x;;
    PPoossiittiioonn	 _y;;
  }}XXmmDDrraaggMMoottiioonnCCaallllbbaacckkSSttrruucctt,, **XXmmDDrraaggMMoottiioonnCCaallllbbaacckk;;

  _r_e_a_s_o_n      Indicates	why the	callback was invoked.

  _e_v_e_n_t	      Points to	the XXEEvveenntt that	triggered the callback.

  _t_i_m_e_S_t_a_m_p   Specifies	the timestamp of the logical event.

  _o_p_e_r_a_t_i_o_n   Identifies an operation.

	      If the toolkit has just called a DropSite's XXmmNNddrraaggPPrroocc, the
	      toolkit initializes _o_p_e_r_a_t_i_o_n to the value of the	_o_p_e_r_a_t_i_o_n
	      member of	the XXmmDDrraaggPPrrooccCCaallllbbaacckkSSttrruucctt at	the time the
	      DropSite's XXmmNNddrraaggPPrroocc returns.

	      If the toolkit has not called an XXmmNNddrraaggPPrroocc and the pointer is
	      within an	active drop site, the toolkit initializes _o_p_e_r_a_t_i_o_n
	      by selecting an operation	from the bitwise AND of	the initial
	      value of the _o_p_e_r_a_t_i_o_n_s member and the value of the DropSite's
	      XXmmNNddrrooppSSiitteeOOppeerraattiioonnss resource.  The toolkit searches this set
	      first for	XXmmDDRROOPP__MMOOVVEE, then for XXmmDDRROOPP__CCOOPPYY, then	for
	      XXmmDDRROOPP__LLIINNKK, and initializes _o_p_e_r_a_t_i_o_n to	the first operation
	      it finds in the set.  If the toolkit finds none of these opera-
	      tions in the set,	it initializes _o_p_e_r_a_t_i_o_n to XXmmDDRROOPP__NNOOOOPP.

	      If the toolkit has not called an XXmmNNddrraaggPPrroocc and the pointer is
	      not within an active drop	site, the toolkit initializes
	      _o_p_e_r_a_t_i_o_n	by selecting an	operation from the initial value of
	      the _o_p_e_r_a_t_i_o_n_s member.  The toolkit searches this	set first for
	      XXmmDDRROOPP__MMOOVVEE, then	for XXmmDDRROOPP__CCOOPPYY, then for XXmmDDRROOPP__LLIINNKK, and
	      initializes _o_p_e_r_a_t_i_o_n to the first operation it finds in the
	      set.  If the toolkit finds none of these operations in the set,
	      it initializes _o_p_e_r_a_t_i_o_n to XXmmDDRROOPP__NNOOOOPP.

  _o_p_e_r_a_t_i_o_n_s  Indicates	the set	of operations supported	for the	source data.

	      If the toolkit has just called a DropSite's XXmmNNddrraaggPPrroocc, the
	      toolkit initializes _o_p_e_r_a_t_i_o_n_s to	the bitwise AND	of the
	      DropSite's XXmmNNddrrooppOOppeerraattiioonnss and the value of the	_o_p_e_r_a_t_i_o_n_s
	      member of	the XXmmDDrraaggPPrrooccCCaallllbbaacckkSSttrruucctt at	the time the
	      DropSite's XXmmNNddrraaggPPrroocc returns.  If the resulting	set of opera-
	      tions is empty, the toolkit initializes _o_p_e_r_a_t_i_o_n_s to
	      XXmmDDRROOPP__NNOOOOPP.

	      If the toolkit has not called an XXmmNNddrraaggPPrroocc and the user	does
	      not select an operation (by pressing a modifier key), the
	      toolkit initializes _o_p_e_r_a_t_i_o_n_s to	the value of the
	      DragContext's XXmmNNddrraaggOOppeerraattiioonnss resource.

	      If the toolkit has not called an XXmmNNddrraaggPPrroocc and the user	does
	      select an	operation, the toolkit initializes _o_p_e_r_a_t_i_o_n_s to the
	      bitwise AND of the corresponding operation and the value of the
	      DragContext's XXmmNNddrraaggOOppeerraattiioonnss resource.	 If the	resulting set
	      of operations is empty, the toolkit initializes _o_p_e_r_a_t_i_o_n_s to
	      XXmmDDRROOPP__NNOOOOPP.

  _d_r_o_p_S_i_t_e_S_t_a_t_u_s
	      Indicates	whether	or not a drop site is valid.

	      If the toolkit has just called a DropSite's XXmmNNddrraaggPPrroocc, the
	      toolkit initializes _d_r_o_p_S_i_t_e_S_t_a_t_u_s to the	value of the _d_r_o_p_S_i_-
	      _t_e_S_t_a_t_u_s member of the XXmmDDrraaggPPrrooccCCaallllbbaacckkSSttrruucctt at the time the
	      DropSite's XXmmNNddrraaggPPrroocc returns.

	      If the toolkit has not called an XXmmNNddrraaggPPrroocc, it initializes
	      _d_r_o_p_S_i_t_e_S_t_a_t_u_s as	follows: the toolkit initializes _d_r_o_p_S_i_t_e_S_-
	      _t_a_t_u_s to XXmmNNOO__DDRROOPP__SSIITTEE if the pointer is	over an	inactive drop
	      site or is not over a drop site.	The toolkit initializes	_d_r_o_p_-
	      _S_i_t_e_S_t_a_t_u_s to XXmmDDRROOPP__SSIITTEE__VVAALLIIDD if all the following conditions
	      are met:

		oo++
		The pointer is over an active drop site.

		oo++
		The DragContext's XXmmNNeexxppoorrttTTaarrggeettss and the DropSite's XXmmNNiimm--
		ppoorrttTTaarrggeettss are	compatible.

		oo++
		The initial value of the _o_p_e_r_a_t_i_o_n member is not XXmmDDRROOPP__NNOOOOPP.
  Otherwise, the toolkit initializes _d_r_o_p_S_i_t_e_S_t_a_t_u_s to XXmmDDRROOPP__SSIITTEE__IINNVVAALLIIDD.

  A pointer to the following structure is passed for the XXmmNNddrrooppFFiinniisshhCCaallll--




  bbaacckk callback:


  ttyyppeeddeeff ssttrruucctt
  {{
    iinntt		 _r_e_a_s_o_n;;
    XXEEvveenntt	 **_e_v_e_n_t;;
    TTiimmee	 _t_i_m_e_S_t_a_m_p;;
    uunnssiiggnneedd cchhaarr_o_p_e_r_a_t_i_o_n;;
    uunnssiiggnneedd cchhaarr_o_p_e_r_a_t_i_o_n_s;;
    uunnssiiggnneedd cchhaarr_d_r_o_p_S_i_t_e_S_t_a_t_u_s;;
    uunnssiiggnneedd cchhaarr_d_r_o_p_A_c_t_i_o_n;;
    uunnssiiggnneedd cchhaarr_c_o_m_p_l_e_t_i_o_n_S_t_a_t_u_s;;
  }}XXmmDDrrooppFFiinniisshhCCaallllbbaacckkSSttrruucctt,, **XXmmDDrrooppFFiinniisshhCCaallllbbaacckk;;

  _r_e_a_s_o_n      Indicates	why the	callback was invoked.

  _e_v_e_n_t	      Points to	the XXEEvveenntt that	triggered the callback.

  _t_i_m_e_S_t_a_m_p   Specifies	the time at which the drop was completed.

  _o_p_e_r_a_t_i_o_n   Identifies an operation.

	      If the pointer is	over an	active drop site when the drop
	      begins, the toolkit initializes _o_p_e_r_a_t_i_o_n	to the value of	the
	      _o_p_e_r_a_t_i_o_n	member of the XXmmDDrrooppPPrrooccCCaallllbbaacckkSSttrruucctt at the time
	      the DropSite's XXmmNNddrrooppPPrroocc returns.

	      If the pointer is	not over an active drop	site when the drop
	      begins, the toolkit initializes _o_p_e_r_a_t_i_o_n	by selecting an
	      operation	from the initial value of the _o_p_e_r_a_t_i_o_n_s member.  The
	      toolkit searches this set	first for XXmmDDRROOPP__MMOOVVEE, then for
	      XXmmDDRROOPP__CCOOPPYY, then	for XXmmDDRROOPP__LLIINNKK, and initializes _o_p_e_r_a_t_i_o_n to
	      the first	operation it finds in the set.	If it finds none of
	      these operations in the set, it initializes _o_p_e_r_a_t_i_o_n to
	      XXmmDDRROOPP__NNOOOOPP.

  _o_p_e_r_a_t_i_o_n_s  Indicates	the set	of operations supported	for the	source data.

	      If the pointer is	over an	active drop site when the drop
	      begins, the toolkit initializes _o_p_e_r_a_t_i_o_n_s to the	bitwise	AND
	      of the DropSite's	XXmmNNddrrooppOOppeerraattiioonnss and the value	of the _o_p_e_r_a_-
	      _t_i_o_n_s member of the XXmmDDrrooppPPrrooccCCaallllbbaacckkSSttrruucctt at the time the
	      DropSite's XXmmNNddrrooppPPrroocc returns.  If the resulting	set of opera-
	      tions is empty, the toolkit initializes _o_p_e_r_a_t_i_o_n_s to
	      XXmmDDRROOPP__NNOOOOPP.

	      If the pointer is	not over an active drop	site when the drop
	      begins and if the	user does not select an	operation (by press-
	      ing a modifier key), the toolkit initializes _o_p_e_r_a_t_i_o_n_s to the
	      value of the DragContext's XXmmNNddrraaggOOppeerraattiioonnss resource.

	      If the pointer is	not over an active drop	site when the drop
	      begins and if the	user does select an operation, the toolkit
	      initializes _o_p_e_r_a_t_i_o_n_s to	the bitwise AND	of the corresponding
	      operation	and the	value of the DragContext's XXmmNNddrraaggOOppeerraattiioonnss
	      resource.	 If the	resulting set of operations is empty, the
	      toolkit initializes _o_p_e_r_a_t_i_o_n_s to	XXmmDDRROOPP__NNOOOOPP.

  _d_r_o_p_S_i_t_e_S_t_a_t_u_s
	      Indicates	whether	or not a drop site is valid.

	      If the pointer is	over an	active drop site when the drop
	      begins, the toolkit initializes _d_r_o_p_S_i_t_e_S_t_a_t_u_s to	the value of
	      the _d_r_o_p_S_i_t_e_S_t_a_t_u_s member	of the XXmmDDrrooppPPrrooccCCaallllbbaacckkSSttrruucctt	at
	      the time the DropSite's XXmmNNddrrooppPPrroocc returns.

	      If the pointer is	not over an active drop	site when the drop
	      begins, the toolkit initializes _d_r_o_p_S_i_t_e_S_t_a_t_u_s to
	      XXmmNNOO__DDRROOPP__SSIITTEE.

  _d_r_o_p_A_c_t_i_o_n  Identifies the drop action.  The values are: XXmmDDRROOPP,
	      XXmmDDRROOPP__CCAANNCCEELL, XXmmDDRROOPP__HHEELLPP, and XXmmDDRROOPP__IINNTTEERRRRUUPPTT.	 The value
	      XXmmDDRROOPP__IINNTTEERRRRUUPPTT is currently unsupported; if specified, it
	      will be interpreted as an	XXmmDDRROOPP__CCAANNCCEELL.

  _c_o_m_p_l_e_t_i_o_n_S_t_a_t_u_s
	      An IN/OUT	member that indicates the status of the	drop action.
	      After the	last callback procedure	has returned, the final	value
	      of this member determines	what visual transition effects will
	      be applied.  There are two values:

	      XXmmDDRROOPP__SSUUCCCCEESSSS
		 The drop was successful.

	      XXmmDDRROOPP__FFAAIILLUURREE
		 The drop was unsuccessful.

  A pointer to the following structure is passed to callbacks for XXmmNNddrrooppSSii--
  tteeEEnntteerrCCaallllbbaacckk:


  ttyyppeeddeeff ssttrruucctt
  {{
    iinntt		 _r_e_a_s_o_n;;
    XXEEvveenntt	 **_e_v_e_n_t;;
    TTiimmee	 _t_i_m_e_S_t_a_m_p;;
    uunnssiiggnneedd cchhaarr_o_p_e_r_a_t_i_o_n;;
    uunnssiiggnneedd cchhaarr_o_p_e_r_a_t_i_o_n_s;;
    uunnssiiggnneedd cchhaarr_d_r_o_p_S_i_t_e_S_t_a_t_u_s;;
    PPoossiittiioonn	 _x;;
    PPoossiittiioonn	 _y;;
  }}XXmmDDrrooppSSiitteeEEnntteerrCCaallllbbaacckkSSttrruucctt,, **XXmmDDrrooppSSiitteeEEnntteerrCCaallllbbaacckk;;

  _r_e_a_s_o_n      Indicates	why the	callback was invoked.

  _e_v_e_n_t	      Points to	the XXEEvveenntt that	triggered the callback.

  _t_i_m_e_s_t_a_m_p   Specifies	the time the crossing event occurred.

  _o_p_e_r_a_t_i_o_n   Identifies an operation.

	      If the toolkit has just called a DropSite's XXmmNNddrraaggPPrroocc, the
	      toolkit initializes _o_p_e_r_a_t_i_o_n to the value of the	_o_p_e_r_a_t_i_o_n
	      member of	the XXmmDDrraaggPPrrooccCCaallllbbaacckkSSttrruucctt at	the time the
	      DropSite's XXmmNNddrraaggPPrroocc returns.

	      If the toolkit has not called an XXmmNNddrraaggPPrroocc, it initializes
	      _o_p_e_r_a_t_i_o_n	by selecting an	operation from the bitwise AND of the
	      initial value of the _o_p_e_r_a_t_i_o_n_s member and the value of the
	      DropSite's XXmmNNddrrooppSSiitteeOOppeerraattiioonnss resource.  The toolkit
	      searches this set	first for XXmmDDRROOPP__MMOOVVEE, then for	XXmmDDRROOPP__CCOOPPYY,
	      then for XXmmDDRROOPP__LLIINNKK, and	initializes _o_p_e_r_a_t_i_o_n to the first
	      operation	it finds in the	set.  If the toolkit finds none	of
	      these operations in the set, it initializes _o_p_e_r_a_t_i_o_n to
	      XXmmDDRROOPP__NNOOOOPP.

  _o_p_e_r_a_t_i_o_n_s  Indicates	the set	of operations supported	for the	source data.

	      If the toolkit has just called a DropSite's XXmmNNddrraaggPPrroocc, the
	      toolkit initializes _o_p_e_r_a_t_i_o_n_s to	the bitwise AND	of the
	      DropSite's XXmmNNddrrooppOOppeerraattiioonnss and the value of the	_o_p_e_r_a_t_i_o_n_s
	      member of	the XXmmDDrraaggPPrrooccCCaallllbbaacckkSSttrruucctt at	the time the
	      DropSite's XXmmNNddrraaggPPrroocc returns.  If the resulting	set of opera-
	      tions is empty, the toolkit initializes _o_p_e_r_a_t_i_o_n_s to
	      XXmmDDRROOPP__NNOOOOPP.

	      If the toolkit has not called an XXmmNNddrraaggPPrroocc and the user	does
	      not select an operation (by pressing a modifier key), the
	      toolkit initializes _o_p_e_r_a_t_i_o_n_s to	the value of the
	      DragContext's XXmmNNddrraaggOOppeerraattiioonnss resource.

	      If the toolkit has not called an XXmmNNddrraaggPPrroocc and the user	does
	      select an	operation, the toolkit initializes _o_p_e_r_a_t_i_o_n_s to the
	      bitwise AND of the corresponding operation and the value of the
	      DragContext's XXmmNNddrraaggOOppeerraattiioonnss resource.	 If the	resulting set
	      of operations is empty, the toolkit initializes _o_p_e_r_a_t_i_o_n_s to
	      XXmmDDRROOPP__NNOOOOPP.

  _d_r_o_p_S_i_t_e_S_t_a_t_u_s
	      Indicates	whether	or not a drop site is valid.

	      If the toolkit has just called a DropSite's XXmmNNddrraaggPPrroocc, the
	      toolkit initializes _d_r_o_p_S_i_t_e_S_t_a_t_u_s to the	value of the _d_r_o_p_S_i_-
	      _t_e_S_t_a_t_u_s member of the XXmmDDrraaggPPrrooccCCaallllbbaacckkSSttrruucctt at the time the
	      DropSite's XXmmNNddrraaggPPrroocc returns.

	      If the toolkit has not called an XXmmNNddrraaggPPrroocc, it initializes
	      _d_r_o_p_S_i_t_e_S_t_a_t_u_s as	follows: the toolkit initializes _d_r_o_p_S_i_t_e_S_-
	      _t_a_t_u_s to XXmmDDRROOPP__SSIITTEE__VVAALLIIDD if the	DragContext's XXmmNNeexxppoorrttTTaarr--
	      ggeettss and the DropSite's XXmmNNiimmppoorrttTTaarrggeettss are compatible and if
	      the initial value	of the _o_p_e_r_a_t_i_o_n member	is not XXmmDDRROOPP__NNOOOOPP.
	      Otherwise, the toolkit initializes _d_r_o_p_S_i_t_e_S_t_a_t_u_s	to
	      XXmmDDRROOPP__SSIITTEE__IINNVVAALLIIDD.

  _x	      Indicates	the x-coordinate of the	pointer	in root	window coor-
	      dinates.

  _y	      Indicates	the y-coordinate of the	pointer	in root	window coor-
	      dinates.

  A pointer to the following structure is passed to callbacks for XXmmNNddrrooppSSii--
  tteeLLeeaavveeCCaallllbbaacckk.


  ttyyppeeddeeff ssttrruucctt
  {{
    iinntt		 _r_e_a_s_o_n;;
    XXEEvveenntt	 **_e_v_e_n_t;;
    TTiimmee	 _t_i_m_e_S_t_a_m_p;;
  }}XXmmDDrrooppSSiitteeLLeeaavveeCCaallllbbaacckkSSttrruucctt,, **XXmmDDrrooppSSiitteeLLeeaavveeCCaallllbbaacckk;;

  _r_e_a_s_o_n      Indicates	why the	callback was invoked.

  _e_v_e_n_t	      Points to	the XXEEvveenntt that	triggered the callback.

  _t_i_m_e_S_t_a_m_p   Specifies	the timestamp of the logical event.

  A pointer to the following structure is passed for the XXmmNNddrrooppSSttaarrttCCaallllbbaacckk









  callback:


  ttyyppeeddeeff ssttrruucctt
  {{
    iinntt		 _r_e_a_s_o_n;;
    XXEEvveenntt	 **_e_v_e_n_t;;
    TTiimmee	 _t_i_m_e_S_t_a_m_p;;
    uunnssiiggnneedd cchhaarr_o_p_e_r_a_t_i_o_n;;
    uunnssiiggnneedd cchhaarr_o_p_e_r_a_t_i_o_n_s;;
    uunnssiiggnneedd cchhaarr_d_r_o_p_S_i_t_e_S_t_a_t_u_s;;
    uunnssiiggnneedd cchhaarr_d_r_o_p_A_c_t_i_o_n;;
    PPoossiittiioonn	 _x;;
    PPoossiittiioonn	 _y;;
  }}XXmmDDrrooppSSttaarrttCCaallllbbaacckkSSttrruucctt,, **XXmmDDrrooppSSttaarrttCCaallllbbaacckk;;

  _r_e_a_s_o_n      Indicates	why the	callback was invoked.

  _e_v_e_n_t	      Points to	the XXEEvveenntt that	triggered the callback.

  _t_i_m_e_S_t_a_m_p   Specifies	the time at which the drag was completed.

  _o_p_e_r_a_t_i_o_n   Identifies an operation.

	      If the pointer is	over an	active drop site when the drop
	      begins, the toolkit initializes _o_p_e_r_a_t_i_o_n	to the value of	the
	      _o_p_e_r_a_t_i_o_n	member of the XXmmDDrrooppPPrrooccCCaallllbbaacckkSSttrruucctt at the time
	      the DropSite's XXmmNNddrrooppPPrroocc returns.

	      If the pointer is	not over an active drop	site when the drop
	      begins, the toolkit initializes _o_p_e_r_a_t_i_o_n	by selecting an
	      operation	from the initial value of the _o_p_e_r_a_t_i_o_n_s member.  The
	      toolkit searches this set	first for XXmmDDRROOPP__MMOOVVEE, then for
	      XXmmDDRROOPP__CCOOPPYY, then	for XXmmDDRROOPP__LLIINNKK, and initializes _o_p_e_r_a_t_i_o_n to
	      the first	operation it finds in the set.	If it finds none of
	      these operations in the set, it initializes _o_p_e_r_a_t_i_o_n to
	      XXmmDDRROOPP__NNOOOOPP.

  _o_p_e_r_a_t_i_o_n_s  Indicates	the set	of operations supported	for the	source data.

	      If the pointer is	over an	active drop site when the drop
	      begins, the toolkit initializes _o_p_e_r_a_t_i_o_n_s to the	bitwise	AND
	      of the DropSite's	XXmmNNddrrooppOOppeerraattiioonnss and the value	of the _o_p_e_r_a_-
	      _t_i_o_n_s member of the XXmmDDrrooppPPrrooccCCaallllbbaacckkSSttrruucctt at the time the
	      DropSite's XXmmNNddrrooppPPrroocc returns.  If the resulting	set of opera-
	      tions is empty, the toolkit initializes _o_p_e_r_a_t_i_o_n_s to
	      XXmmDDRROOPP__NNOOOOPP.

	      If the pointer is	not over an active drop	site when the drop
	      begins and if the	user does not select an	operation (by press-
	      ing a modifier key), the toolkit initializes _o_p_e_r_a_t_i_o_n_s to the
	      value of the DragContext's XXmmNNddrraaggOOppeerraattiioonnss resource.

	      If the pointer is	not over an active drop	site when the drop
	      begins and if the	user does select an operation, the toolkit
	      initializes _o_p_e_r_a_t_i_o_n_s to	the bitwise AND	of the corresponding
	      operation	and the	value of the DragContext's XXmmNNddrraaggOOppeerraattiioonnss
	      resource.	 If the	resulting set of operations is empty, the
	      toolkit initializes _o_p_e_r_a_t_i_o_n_s to	XXmmDDRROOPP__NNOOOOPP.

  _d_r_o_p_S_i_t_e_S_t_a_t_u_s
	      Indicates	whether	or not a drop site is valid.

	      If the pointer is	over an	active drop site when the drop
	      begins, the toolkit initializes _d_r_o_p_S_i_t_e_S_t_a_t_u_s to	the value of
	      the _d_r_o_p_S_i_t_e_S_t_a_t_u_s member	of the XXmmDDrrooppPPrrooccCCaallllbbaacckkSSttrruucctt	at
	      the time the DropSite's XXmmNNddrrooppPPrroocc returns.

	      If the pointer is	not over an active drop	site when the drop
	      begins, the toolkit initializes _d_r_o_p_S_i_t_e_S_t_a_t_u_s to
	      XXmmNNOO__DDRROOPP__SSIITTEE.

  _d_r_o_p_A_c_t_i_o_n  An IN/OUT	member that identifies the drop	action.	 The values
	      are XXmmDDRROOPP, XXmmDDRROOPP__CCAANNCCEELL, XXmmDDRROOPP__HHEELLPP, and XXmmDDRROOPP__IINNTTEERRRRUUPPTT.
	      The value	of _d_r_o_p_A_c_t_i_o_n can be modified to change	the action
	      actually initiated. The value XXmmDDRROOPP__IINNTTEERRRRUUPPTT is	currently
	      unsupported; if specified, it will be interpreted	as a
	      XXmmDDRROOPP__CCAANNCCEELL.

  _x	      Indicates	the x-coordinate of the	pointer	in root	window coor-
	      dinates.

  _y	      Indicates	the y-coordinate of the	pointer	in root	window coor-
	      dinates.

  A pointer to the following structure is passed to the	XXmmNNooppeerraattiioonnCChhaannggeedd--
  CCaallllbbaacckk callback:


  ttyyppeeddeeff ssttrruucctt
  {{
    iinntt		 _r_e_a_s_o_n;;
    XXEEvveenntt	 **_e_v_e_n_t;;
    TTiimmee	 _t_i_m_e_S_t_a_m_p;;
    uunnssiiggnneedd cchhaarr_o_p_e_r_a_t_i_o_n;;
    uunnssiiggnneedd cchhaarr_o_p_e_r_a_t_i_o_n_s;;
    uunnssiiggnneedd cchhaarr_d_r_o_p_S_i_t_e_S_t_a_t_u_s;;
  }}XXmmOOppeerraattiioonnCChhaannggeeddCCaallllbbaacckkSSttrruucctt,, **XXmmOOppeerraattiioonnCChhaannggeeddCCaallllbbaacckk;;

  _r_e_a_s_o_n      Indicates	why the	callback was invoked.

  _e_v_e_n_t	      Points to	the XXEEvveenntt that	triggered the callback.

  _t_i_m_e_s_t_a_m_p   Specifies	the time at which the crossing event occurred.

  _o_p_e_r_a_t_i_o_n   Identifies an operation.

	      If the toolkit has just called a DropSite's XXmmNNddrraaggPPrroocc, the
	      toolkit initializes _o_p_e_r_a_t_i_o_n to the value of the	_o_p_e_r_a_t_i_o_n
	      member of	the XXmmDDrraaggPPrrooccCCaallllbbaacckkSSttrruucctt at	the time the
	      DropSite's XXmmNNddrraaggPPrroocc returns.

	      If the toolkit has not called an XXmmNNddrraaggPPrroocc and the pointer is
	      within an	active drop site, the toolkit initializes _o_p_e_r_a_t_i_o_n
	      by selecting an operation	from the bitwise AND of	the initial
	      value of the _o_p_e_r_a_t_i_o_n_s member and the value of the DropSite's
	      XXmmNNddrrooppSSiitteeOOppeerraattiioonnss resource.  The toolkit searches this set
	      first for	XXmmDDRROOPP__MMOOVVEE, then for XXmmDDRROOPP__CCOOPPYY, then	for
	      XXmmDDRROOPP__LLIINNKK, and initializes _o_p_e_r_a_t_i_o_n to	the first operation
	      it finds in the set.  If the toolkit finds none of these opera-
	      tions in the set,	it initializes _o_p_e_r_a_t_i_o_n to XXmmDDRROOPP__NNOOOOPP.

	      If the toolkit has not called an XXmmNNddrraaggPPrroocc and the pointer is
	      not within an active drop	site, the toolkit initializes _o_p_e_r_a_-
	      _t_i_o_n by selecting	an operation from the initial value of the
	      _o_p_e_r_a_t_i_o_n_s member.  The toolkit searches this set	first for
	      XXmmDDRROOPP__MMOOVVEE, then	for XXmmDDRROOPP__CCOOPPYY, then for XXmmDDRROOPP__LLIINNKK, and
	      initializes _o_p_e_r_a_t_i_o_n to the first operation it finds in the
	      set.  If the toolkit finds none of these operations in the set,
	      it initializes _o_p_e_r_a_t_i_o_n to XXmmDDRROOPP__NNOOOOPP.

  _o_p_e_r_a_t_i_o_n_s  Indicates	the set	of operations supported	for the	source data.

	      If the toolkit has just called a DropSite's XXmmNNddrraaggPPrroocc, the
	      toolkit initializes _o_p_e_r_a_t_i_o_n_s to	the bitwise AND	of the
	      DropSite's XXmmNNddrrooppOOppeerraattiioonnss and the value of the	_o_p_e_r_a_t_i_o_n_s
	      member of	the XXmmDDrraaggPPrrooccCCaallllbbaacckkSSttrruucctt at	the time the
	      DropSite's XXmmNNddrraaggPPrroocc returns.  If the resulting	set of
	      operations is empty, the toolkit initializes _o_p_e_r_a_t_i_o_n_s to
	      XXmmDDRROOPP__NNOOOOPP.

	      If the toolkit has not called an XXmmNNddrraaggPPrroocc and the user	does
	      not select an operation (by pressing a modifier key), the
	      toolkit initializes _o_p_e_r_a_t_i_o_n_s to	the value of the
	      DragContext's XXmmNNddrraaggOOppeerraattiioonnss resource.

	      If the toolkit has not called an XXmmNNddrraaggPPrroocc and the user	does
	      select an	operation, the toolkit initializes _o_p_e_r_a_t_i_o_n_s to the
	      bitwise AND of the corresponding operation and the value of the
	      DragContext's XXmmNNddrraaggOOppeerraattiioonnss resource.	 If the	resulting set
	      of operations is empty, the toolkit initializes _o_p_e_r_a_t_i_o_n_s to
	      XXmmDDRROOPP__NNOOOOPP.

  _d_r_o_p_S_i_t_e_S_t_a_t_u_s
	      Indicates	whether	or not a drop site is valid.

	      If the toolkit has just called a DropSite's XXmmNNddrraaggPPrroocc, the
	      toolkit initializes _d_r_o_p_S_i_t_e_S_t_a_t_u_s to the	value of the _d_r_o_p_S_i_-
	      _t_e_S_t_a_t_u_s member of the XXmmDDrraaggPPrrooccCCaallllbbaacckkSSttrruucctt at the time the
	      DropSite's XXmmNNddrraaggPPrroocc returns.

	      If the toolkit has not called an XXmmNNddrraaggPPrroocc, it initializes
	      _d_r_o_p_S_i_t_e_S_t_a_t_u_s as	follows: the toolkit initializes _d_r_o_p_S_i_t_e_S_-
	      _t_a_t_u_s to XXmmNNOO__DDRROOPP__SSIITTEE if the pointer is	over an	inactive drop
	      site or is not over a drop site.	The toolkit initializes	_d_r_o_p_-
	      _S_i_t_e_S_t_a_t_u_s to XXmmDDRROOPP__SSIITTEE__VVAALLIIDD if all the following conditions
	      are met:

		oo++
		The pointer is over an active drop site

		oo++
		The DragContext's XXmmNNeexxppoorrttTTaarrggeettss and the DropSite's XXmmNNiimm--
		ppoorrttTTaarrggeettss are	compatible

		oo++
		The initial value of the _o_p_e_r_a_t_i_o_n member is not XXmmDDRROOPP__NNOOOOPP
  Otherwise, the toolkit initializes _d_r_o_p_S_i_t_e_S_t_a_t_u_s to XXmmDDRROOPP__SSIITTEE__IINNVVAALLIIDD.

  A pointer to the following structure is passed to callbacks for XXmmNNttoo--
  ppLLeevveellEEnntteerrCCaallllbbaacckk:


  ttyyppeeddeeff ssttrruucctt
  {{
    iinntt		 _r_e_a_s_o_n;;
    XXEEvveenntt	 **_e_v_e_n_t;;
    TTiimmee	 _t_i_m_e_s_t_a_m_p;;
    SSccrreeeenn	 _s_c_r_e_e_n;;
    WWiinnddooww	 _w_i_n_d_o_w;;
    PPoossiittiioonn	 _x;;
    PPoossiittiioonn	 _y;;
    uunnssiiggnneedd cchhaarr_d_r_a_g_P_r_o_t_o_c_o_l_S_t_y_l_e;;
  }}XXmmTTooppLLeevveellEEnntteerrCCaallllbbaacckkSSttrruucctt,, **XXmmTTooppLLeevveellEEnntteerrCCaallllbbaacckk;;

  _r_e_a_s_o_n      Indicates	why the	callback was invoked.

  _e_v_e_n_t	      Points to	the XXEEvveenntt that	triggered the callback.

  _t_i_m_e_S_t_a_m_p   Specifies	the timestamp of the logical event.

  _s_c_r_e_e_n      Specifies	the screen associated with the top-level window	or
	      root window being	entered.

  _w_i_n_d_o_w      Specifies	the ID of the top-level	window or root window being
	      entered.

  _x	      Indicates	the x-coordinate of the	pointer	in root	window coor-
	      dinates.

  _y	      Indicates	the y-coordinate of the	pointer	in root	window coor-
	      dinates.

  _d_r_a_g_P_r_o_t_o_c_o_l_S_t_y_l_e
	      Specifies	the protocol style adopted by the initiator.  The
	      values are XXmmDDRRAAGG__DDRROOPP__OONNLLYY, XXmmDDRRAAGG__DDYYNNAAMMIICC, XXmmDDRRAAGG__NNOONNEE,	and
	      XXmmDDRRAAGG__PPRREERREEGGIISSTTEERR.

  A pointer to the following structure is passed to callbacks for XXmmNNttoo--
  ppLLeevveellLLeeaavveeCCaallllbbaacckk:


  ttyyppeeddeeff ssttrruucctt
  {{
    iinntt		 _r_e_a_s_o_n;;
    XXEEvveenntt	 **_e_v_e_n_t;;
    TTiimmee	 _t_i_m_e_s_t_a_m_p;;
    SSccrreeeenn	 _s_c_r_e_e_n;;
    WWiinnddooww	 _w_i_n_d_o_w;;
  }}XXmmTTooppLLeevveellLLeeaavveeCCaallllbbaacckkSSttrruucctt,, **XXmmTTooppLLeevveellLLeeaavveeCCaallllbbaacckk;;

  _r_e_a_s_o_n      Indicates	why the	callback was invoked.

  _e_v_e_n_t	      Points to	the XXEEvveenntt that	triggered the callback.

  _t_i_m_e_S_t_a_m_p   Specifies	the timestamp of the logical event.

  _s_c_r_e_e_n      Specifies	a screen associated with the top-level window or root
	      window being left.

  _w_i_n_d_o_w      Specifies	the ID of the top-level	window or root window being
	      left.

  Translations

  The XmDragContext translations are listed below.  These translations may
  not directly correspond to a translation table.

       BBDDrraagg MMoottiioonn::  DDrraaggMMoottiioonn(())
       BBDDrraagg RReelleeaassee:: FFiinniisshhDDrraagg(())
       KKCCaanncceell::	      CCaanncceellDDrraagg(())
       KKHHeellpp::	      HHeellppDDrraagg(())

  Action Routines

  The XmDragContext action routines are	described below:

  CCaanncceellDDrraagg(()):
	    Cancels the	drag operation and frees the associated	DragContext.

  DDrraaggMMoottiioonn(()):
	    Drags the selected data as the pointer is moved.

  FFiinniisshhDDrraagg(()):
	    Finishes the drag operation	and starts the drop operation.

  HHeellppDDrraagg(()):
	    Initiates a	conditional drop that enables the receiver to provide
	    help information to	the user.  The user can	cancel or continue
	    the	drop operation in response to this information.

  Virtual Bindings

  The bindings for virtual keys	are vendor specific.  For information about
  bindings for virtual buttons and keys, see VViirrttuuaallBBiinnddiinnggss((33XX)).

RELATED	INFORMATION
  CCoorree((33XX)), XXmmDDiissppllaayy((33XX)), XXmmDDrraaggCCaanncceell((33XX)), XXmmDDrraaggIIccoonn((33XX)), XXmmDDrraaggSSttaarrtt((33XX)),
  XXmmDDrrooppSSiittee((33XX)), XXmmDDrrooppTTrraannssffeerr((33XX)), and XXmmSSccrreeeenn((33XX)).

























































